แผนผังโครงสร้างระบบ
โทโพโลยีเครือข่าย e-GP, บริการ K8s และขั้นตอนการยืนยันตัวตน
Guest
G
210
บริการ K8s
27
รหัส DB ที่รั่วไหล
27
Actuator ที่เปิดอยู่
1270
ตัวแปร Env ที่ดึงได้
โทโพโลยีเครือข่าย — 203.170.16.x
ทำงาน
www
203.170.16.1
Main Website
ทำงาน
mail
203.170.16.2
Mail Server
ทำงาน
report
203.170.16.10
Report Server
ทำงาน
p3
203.170.16.12
Process3 (WebSphere)
ทำงาน
p4
203.170.16.27
Process4
บางส่วน
p5
203.170.16.41
Process5 (K8s+nginx)
ทำงาน
login
203.170.16.42
Keycloak SSO
บางส่วน
kms
203.170.16.43
Vault KMS
ทำงาน
sms
203.170.16.88
SMS/OTP Gateway
ขั้นตอนการยืนยันตัวตน
ขั้นตอน 1
Browser
OIDC Auth Code Flow
→ Keycloak
→
ขั้นตอน 2
Keycloak
JWT Token (4h TTL)
→ Browser
→
ขั้นตอน 3
Browser
redirectToEndpoint
→ egp-authen-service
→
ขั้นตอน 4
Browser
standBySession
→ Process3
→
ขั้นตอน 5
Browser
API Calls
→ API Services
→
ขั้นตอน 6
API Services
Transit Encrypt/Decrypt
→ Vault
ช่องโหว่ในขั้นตอนยืนยันตัวตน:
- • บายพาส E1538: ส่ง dataProfile ใน POST body แทน header
- • ปลอม DP: เซิร์ฟเวอร์ไม่ตรวจสอบ JWT.sub กับ DP identity
- • JWT หมดอายุ: 14 endpoint + Vault ยอมรับ token หมดอายุ
- • กุญแจ AES = JWT.sub: ไม่ hash, ไม่ salt — ใช้ UUID ดิบเป็นกุญแจเข้ารหัส
ส่วนประกอบโครงสร้างพื้นฐาน
| ส่วนประกอบ | เวอร์ชัน | บทบาท | หมายเหตุ |
|---|---|---|---|
| Keycloak | 14-16 | SSO/Authentication | allowed-origins: [*], client: egp-login-keycloak-web |
| HashiCorp Vault | 1.11.3 (EOL) | KMS/Encryption | Shamir 3/5, Raft storage, 30+ unpatched CVEs |
| IBM DB2 | Driver 4.25.13 | Database | 3 servers, K8s internal only |
| nginx | 1.22 | Reverse Proxy | Process5 frontend |
| F5 ASM | N/A | WAF | Bypass: %61ctuator URL encoding |
| JBoss EAP | N/A | Application Server | Java 11.0.13, RHEL 8.6, OpenShift |
| ActiveMQ | AMQP | Message Queue | admin user, 2-node cluster, 13 queues |
| IBM WebSphere | N/A | Process3 App Server | UP 24/7 |
บริการ Kubernetes (27 บริการ)
| ชื่อบริการ | Endpoints | สถานะ | ผู้ใช้ DB | หมายเหตุ |
|---|---|---|---|---|
| egp-merchant-ebidding-service | 72 | ทำงาน | MERBID01 | Main bidding service |
| egp-doc-examine-service | 7 | ทำงาน | DEX01 | Document examination |
| egp-doc-price-estimate-service | 4 | ทำงาน | N/A | Price estimates |
| egp-upload-service | 5 | ทำงาน | N/A | File upload/download, apiKey auth only |
| egp-doc-review-service | 18 | ทำงาน | N/A | secret=password |
| egp-common-service | 10 | วันทำการ | EGPMS01 | getBidder endpoint |
| egp-project-service | 8 | วันทำการ | PROJECT | Project metadata |
| egp-master-ebidding-service | 6 | วันทำการ | N/A | Master data |
| egp-flow-agency-service | 5 | วันทำการ | N/A | Workflow |
| egp-template-service | 4 | วันทำการ | TEMPLATE | Document templates |
| egp-authen-service | 6 | ทำงาน | N/A | Authentication, delUserSession |
| egp-rdb-service | 5 | ทำงาน | EGPMS01 | Report database |
| egp-procure-project-service | 4 | ทำงาน | EGPMS01 | Procurement |
| egp-merchant-econtract-service | 6 | ทำงาน | N/A | E-contract |
| egp-report-service | 8 | ทำงาน | egpsme | Reports |
| egp-bidding-service | 5 | ทำงาน | N/A | Bidding core |
| egp-budget-service | 4 | ทำงาน | N/A | Budget |
| egp-appeal-service | 3 | ทำงาน | N/A | Appeals |
| egp-blockchain-service | 3 | ทำงาน | N/A | Blockchain verify |
| egp-acc-merchant-service | 4 | วันทำการ | N/A | Merchant accounts |
| egp-sme-service | 3 | ทำงาน | N/A | SME, clientId=CGD |
| egp-mail-service | 2 | ทำงาน | N/A | Email notifications |
| egp-improve-service | 2 | ทำงาน | N/A | Improvements |
| egp-register-interface-service | 3 | ทำงาน | N/A | Registration |
| egp-dashboard-service | 5 | ทำงาน | N/A | Dashboard, 3rd DB (egpalltemp) |
| egp-trader-report-service | 4 | ทำงาน | N/A | Trader reports |
| egp-doc-winner-service | 4 | วันทำการ | N/A | Winner docs |
เซิร์ฟเวอร์ IBM DB2 (3 เซิร์ฟเวอร์)
egpcoredb
พอร์ต: 50088
ฐานข้อมูล: EGPDB
บริการ: report, rdb, procure-project, common, merchant-econtract, authen, appeal, trader-report
รหัสที่รั่วไหล:
egpsme
:
••••••••••••
(report)
EGPMS01
:
••••••••••••
(rdb, procure-project)
egpmsdb
พอร์ต: 50188
ฐานข้อมูล: EGP5DB
บริการ: doc-examine, project, template, merchant-ebidding, merchant-emarket, budget, bidding
รหัสที่รั่วไหล:
MERBID01
:
••••••••••••
(merchant-ebidding)
DEX01
:
••••••••••••
(doc-examine)
PROJECT
:
••••••••••••
(project)
TEMPLATE
:
••••••••••••
(template)
egpalltemp
พอร์ต: 50066
ฐานข้อมูล: ALLTEMP
บริการ: dashboard
หมายเหตุ: เซิร์ฟเวอร์ DB2 อยู่ภายใน K8s เท่านั้น (172.28.x.x) ไม่สามารถเข้าถึงจากภายนอกได้
คิวและหัวข้อ ActiveMQ
Q_MERBID_INFOSUBMIT
Q_PUB_INFOANNOUNCE
Q_BID2FLW_STEP
Q_MERBID_REGSUBMIT
Q_MERBID_EXTENDBID
Q_PRJ_PROJECTSTATUS
Q_DEX_INFONEWBID
Q_PRJ_INFOPROJECT
Q_PUB_ANNOUNCEREVIEW
T_PUB_INFOANNOUNCE_MERBID
T_MERBID_REGSUBMIT_MERBID
T_PRJ_PROJECTSTATUS_MERBID
T_DEX_INFONEWBID_MERBID
ผู้ดูแล: admin (รหัสเริ่มต้น) | คลัสเตอร์ AMQP 2 โหนด ใน amq-system namespace