เราทำมันด้วยฟังก์ชั่นบรรทัดคำสั่ง (Bash) บนเว็บเซิร์ฟเวอร์ตามลำดับในสแต็ก
monitor_outbound ()
{
tcpflow -p -c -i bond0 '( port 80 or port 443 ) and ' $(ip addr list | grep -Eoh "([0-9]{1,3}\.){3}[0-9]+" | sort -u | awk '{print "src host " $1 " or"}' | tr '\n' ' ' | sed -E 's# or $##g') | grep --line-buffered -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*' | sed --unbuffered "s/^/$(date "+%b %d %T"): /g"
}
คุณสามารถใช้ประโยชน์จากวิธี CURL / fopen ใน Magento (แต่สมมติว่าพวกเขาต้องการใช้วิธีหลักในการทำ) บ่อยกว่านั้นคุณจะพบว่าโมดูลที่กำหนดเองใช้วิธีการเปิดfile_get_contents()
หรือcurl
วิธีการของพวกเขา
คุณสามารถตรวจสอบอย่างรวดเร็วด้วยการที่ง่ายgrep
(สมมติว่ารหัสไม่สับสน)
grep -ilrE "curl|file_get_contents|fopen|Zend_Http_Client" app/code/local app/code/community
และตามที่ @Marius ได้กล่าวไว้ด้านล่างให้ดูโมดูลที่ซับซ้อนซึ่งอาจซ่อนวิธีการของพวกเขาในbase64
สตริงที่เข้ารหัส
grep -ilrE "eval[\t ]+\(" app/code/local app/code/community
ปัญหาเดียวของเมธอด CLI ข้างต้นนั้นมีประสิทธิภาพอย่างมากสำหรับการร้องขอ HTTP ขาออก แต่ก็ไม่มีประโยชน์สำหรับ HTTPS (เนื่องจากปริมาณการใช้ข้อมูลถูกเข้ารหัส) สิ่งที่ดีที่สุดที่คุณจะได้รับคือ IP / ชื่อโฮสต์ แต่ไม่มีอะไรเพิ่มเติม